在我的 Rails (3.1) 应用程序中,我有一个购物车,在此人进入其所在州后,我会在页面上显示销售税字段和总计。
它可以正常工作,除非出现错误并且该人已经进入了他们的状态。在这种情况下,字段值不会更改(因为 State 字段已填充),因此不会再次触发 jQuery (update_sales_tax)。
有没有办法再次呈现视图(以防出现错误),因此该人不需要再次填写整个表格,但仍然计算销售税?或者也许是一种更好的方法来动态地在页面上向用户显示他们的销售税(因为它取决于州)?
换句话说,format.html {render :action => 'new'}
如果 Orders#new 中有错误,我的控制器会执行此操作。它以人员已经输入的表单填充字段,但是它不会重新计算通过 jQuery 对 :state 字段的 onChange 触发的销售税。如果视图再次呈现并且 :state 已经填充,我该如何重新计算?
在 Orders#new 视图中,我有:
<%= form_for(@order, :method => :post) do |f| %>
<%= f.hidden_field :total_sales_tax, :value => @tax_amount %>
<%= f.fields_for :products_shipping do |shipping | %>
<%= shipping.select(:state , Order::STATES ,{:prompt => 'Select State'}, :id => "ship_state",:onchange => "update_sales_tax()") %>
<% end %>
<% end %>
<script>
function update_sales_tax(){
jQuery.ajax({
url: '/orders/order_update',
dataType: 'script',
type:'get',
data:'stateTo='+jQuery("#ship_state").val()
})
}
</script>
在订单/order_update.js.erb 中:
jQuery('#cart_details').html('<%= escape_javascript(render(:partial => @cart)) %>');
jQuery('#order_amount').val('<%= format("%.2f", @grand_total) %>');
jQuery('#order_total_shipping').val('<%= format("%.2f", @cart.total_shipping) %>');
jQuery('#order_total_sales_tax').val('<%= format("%.2f", @tax_amount) %>');