【问题标题】:submit_tag do hidden_field - saving data?submit_tag 做 hidden_​​field - 保存数据?
【发布时间】:2011-09-16 18:01:51
【问题描述】:

我正在创建简单的支付表单,允许用户从多个不同的网关(paypal、google checkout 等)中进行选择。

所有网关都在它们的托管页面上,而不是我自己集成的。

我试图在逻辑上做的是在我的表单上创建几个不同的提交按钮。然后每个提交按钮都会有一个 hidden_​​field 指定一个网关,例如:

<%= f.submit "Payment", :type => :image, :src => "https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif"  do %>
<% f.hidden_field :gateway, :value => "paypal" %>
<% end %>

然后在我的控制器中:

if @payment.save and @payment.gateway == "paypal"
      redirect_to @payment.paypal_url #model method to link to payment url
else
      render "new"
end

但是,我在保存 hidden_​​field 数据时遇到了问题。每次我为我的网关想出一个零值时。

我想我有两个问题:

如何使用 hidden_​​field 分配数据? 可以将 submit_tag 用于带有 hidden_​​field 的 do 循环吗?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我认为更好的解决方案是使用 javascript 来处理填充隐藏字段。所以你可以这样做:

    <%= hidden_field_tag "gateway", :id => "gateway" %>
    <%= submit_tag "Paypal", :id => "paypal", *other options* %>
    <%= ... other similar buttons %>
    

    然后您可以使用 javascript 用必要的数据填充hidden_field_tag:说网关名称(paypal,...)。为此,只需通过 id: gateway 找到 DOM 元素 (hidden_​​field_tag) 并填写您的数据。
    为了。例如:

    $(function(){
      $('input[type='submit']').click(function(){
         var gateway_title = $(this).attr("id")
         $('#gateway').val(gateway_title);
      })
    })
    

    ..或者您可以在表单提交处理程序上设置此类代码。

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 2020-08-08
      • 2011-03-09
      • 2014-10-01
      相关资源
      最近更新 更多