4

e コマース サイトのチェックアウト フォームがあります。配送オプション (速達、標準など) のラジオ ボタンがあり、ユーザーが AJAX を使用してクリックするボタンの横に<%= shipping_delivered_day %>あるタグ内に動的な値を表示する必要があります。p.label_delivery_dateこれは私のhtmlです:

<% @shipping_services.each do |ship| %>
  <%
    shipping_service = ShippingService.find_by_name(ship.shipping_service)
    ship_id_value = ""+shipping_service.id.to_s
  %>
  <label class="reverse-label">
    <span class="check">
        <%= radio_button :shipment, :desired_shipping_method, ship_id_value, :checked => "checked" %>
        <%= radio_button :shipment, :desired_shipping_method, ship_id_value "%>
    </span>

    <span class="label">
      <%= shipping_service.description %>
      <p class="label_delivery_date" ></p>
    </span>
    <span class="label">
      <%= shipping_service.description %>
    </span>
  </label>

<% end %>

:onclickラジオボタンでオプションを実行できることは知っていますが、それは私をjavascriptファイルに送るだけです。動的な値を渡せるshipping_delivered_dayようにする必要があるため、それを処理するにはレールが必要です。ラジオボタンのクリックからJSリクエストを送信するにはどうすればよいですか?

4

1 に答える 1

2

実際、Ruby/Rails はこれを行うための非常に巧妙な方法を提供しています。あなたがしなければならないのは、あなたのラジオボタンがクリック時にJavaScript関数を呼び出すようにし、その関数に部分的なレンダリングを入れることです:

<script>
function render_partial() {
  $('#partial-area').html('<%=j render :partial => "partial" %>')
}
</script>

<%=  radio_button :model, :field, :value, :onclick => "render_partial();" %>
<div id="partial-area"></div>

これにより、ラジオ ボタンがクリックされたときに、指定されたパーシャルが 'partial-area' div にレンダリングされます。複数のパーシャルの場合は、複数の関数を同じ div で動作させるだけです。特定の例では、パーシャルに配送日を決定するコードを含める必要があります。locals を使用してパーシャルをレンダリングし ( render :partial => "ship_3day", :locals => {:p => @product})、パーシャルが適切な結果を返すようにすることができます ( <%= p.shipping_delivered_day %>)。

于 2013-05-31T19:53:52.517 に答える