0

私の 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>

orders/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) %>');
4

1 に答える 1

0

関数の上に次の行を追加する必要がありました。

window.onload = update_sales_tax();
于 2012-05-31T23:50:29.790 に答える