4

我有我的电子商务网站的结帐表格。它有用于运输选项(快递、标准等)的单选按钮,我希望它显示一个动态值,<%= shipping_delivered_day %>以显示在p.label_delivery_date用户使用 AJAX 单击的按钮旁边的标签内。这是我的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值,所以我需要 rails 来处理它。如何通过单击单选按钮发送 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>

单击单选按钮时,这会将给定的部分呈现到“部分区域”div中。对于多个部分,只需让多个函数作用于同一个 div。在您的特定情况下,您会希望您的部分包含一些代码,这些代码将确定您的发货日期。您可以使用 locals () 渲染部分,render :partial => "ship_3day", :locals => {:p => @product}并让您的部分返回适当的结果 ( <%= p.shipping_delivered_day %>)。

于 2013-05-31T19:53:52.517 回答