【发布时间】:2015-07-25 09:56:40
【问题描述】:
我有一个结帐表格,其中包含一个用于输入优惠券代码的字段。目前,表单始终发布给支付商家。但是,如果由于优惠券代码的原因,应付金额为 0,我希望它采取不同的行动/路线。
查看页面包含:
# Form where to enter coupon code
<%= form_for @coupon, method: :post, url: {action: "check_coupon", :controller => 'coupons', format: 'js'}, remote: true do |f| %>
<%= f.submit "Submit Coupon" %>
<%= f.text_field :couponcode, :placeholder => "Enter coupon" %>
...hidden fields...
<% end %>
# Form sent to payment merchant
<form action="https://secure.***.com/order.html" method="post" >
<input type="hidden" name="payment" value="<%=@payment%>" class='js-couponpayment' />
...other hidden fields...
</form>
控制器方法check_coupon 只是验证优惠券并设置一些在表单中作为隐藏字段存在的变量以发送给支付商家。这包括一个名为@payment 的变量,它指定要支付的金额。此金额会根据输入的优惠券进行更新。 Ajax 用于在屏幕上显示更新后的金额,但为了保证其安全check_coupon,而不是仅针对屏幕上显示的数字的脚本,设置要发送给商家的实际金额。
如果@payment 为零,我希望第二个表单不要发给商家,而是通过一条消息重定向到root_path。我怎样才能做到这一点?如何根据@payment 的更新值为第二个表单变量创建action(最好使用Ruby 而不是javascript)?
【问题讨论】:
-
第二个表单有提交按钮吗?如果没有,第二个表单什么时候提交?
-
是的,两个表单都有提交按钮。
标签: ruby-on-rails ruby forms ruby-on-rails-4