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。所以问题是,如何更改变量或将函数添加到hidden_​​field_tag?我也可以使用:amount =>“ variable-set-by-javascript”,但无法这样做。

最佳答案

我在Braintree工作。我们错过了这个问题,但希望您与support联系或确定您的问题。

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

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

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

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

相关文章:

javascript - jquery条件表单提交

javascript - 浏览器缓存 javascript

javascript - Cordova Visual Studio 2012 Express for Windows Phone : Open External PDF URL

mysql - 为什么 MyModel.offset(n).find(20) 在带有 MySQL 的 Rails 3 中这么慢?

javascript - 如何将现有的 rjs 转换为在 Rails 3 中使用 jQuery 和 json?

java - 在 JSP 文件中正确使用函数

ruby-on-rails - 休息和 rails : What is the best way to show different views for a given resource and action?

ruby-on-rails - 在多个模型上实现新闻提要/事件提要 - 建议?

ruby-on-rails - Rails 版本卡在 2.3.5 如何更新到 3.x

javascript - 使用 Javascript 更新纬度和经度值