javascript - 调用rails内的javascript函数hidden_​​field_tag

标签 javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 braintree

我正在一个简单的站点中设置 Braintree。 Braintree 是一个支付平台。在他们的示例中,他们使用 hiddel_field_tag,如下所示:

<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
  :redirect_url => confirm_payment_url,
  :transaction => {:type => "sale", :amount => @amount }
) %>

现在,就我而言,我想通过 JavaScript 函数设置交易金额,因为我只有三个选项,而不是通过服务器。我尝试过很多事情,比如

<%= hidden_field_tag :tr_data, Braintree::TransparentRedirect.transaction_data(
  :redirect_url => confirm_payment_url,
  :transaction => {:type => "sale", :amount => "return amountFunction();" }
) %>

哪里

function amountFunction()
{
  var amount = $('input[name=optionsRadios]:radio:checked').val();
  return amount;
}

但不工作。如您所见,我仍处于 Rails 学习阶段。所以问题是,如何更改变量或向隐藏字段标签添加函数?我也可以制作 :amount => "variable-set-by-javascript",但未能做到这一点。

最佳答案

我在布伦特里工作。我们错过了这个问题,但希望您联系support或者找出你的问题。

Braintree::TransparentRedirect.transaction_data 方法在呈现表单之前在服务器上运行,因此它需要一个实际金额,而不是稍后将评估并返回金额的字符串。

此外,您通常不能/不应在客户端/transaction_data 之外设置金额。这将允许某人更改浏览器中的金额并提交他们想要的任何金额的交易 - 这是您想要避免的,因为它可能会花费您金钱。

自从您发布此问题后,我们已启动 Braintree.js这将允许您将整个表单发布到您的服务器,并验证该金额是否有效 before submitting the form to Braintree 。我建议对任何新集成使用该集成方法,或者如果您需要对付款流程进行其他更改,则升级到该方法。

关于javascript - 调用rails内的javascript函数hidden_​​field_tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13941085/

相关文章:

ruby-on-rails - 如何查找范围是否包含在范围数组中?

ruby-on-rails - 编写具有重复值的 Ruby Hash 而不重复值

mysql - 无法在 fedora 21 机器上安装 scrypt gem

javascript - 在用户选择查看全部之前限制向用户显示的评论数量的好方法是什么?

javascript - 这个 CSS 菜单是如何创建的?

javascript - 从 setTimeout 返回一个值

mysql - pgloader - 无法以用户 "localhost": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled 的身份在 "root"(端口 3306)连接到 mysql

javascript - react : "Prop or nothing" in component property

javascript - 我如何返回 eval(code) 并使用 JavaScript 取回对象?

ruby-on-rails-3 - 如何处理和错误以及将错误发送给response_with