在rails hidden_​​field_tag中调用javascript函数

时间:2012-12-18 20:37:13

标签: 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的学习阶段。所以问题是,如何更改变量或将函数添加到hidden_​​field_tag?我也可以:amount =&gt; &#34;由javascript&#34;变量设置,但未能这样做。

1 个答案:

答案 0 :(得分:0)

我在Braintree工作。我们错过了这个问题,但希望您联系support或找出了问题。

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

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

自您发布此问题以来,我们已启动Braintree.js,您可以将整个表单发布到服务器,并验证该数量在before submitting the form to Braintree有效。我建议对任何新集成使用该集成方法,或者如果您需要对付款流进行其他更改,请升级到该集成。