我有一个电子商务网站的结帐表格。它具有用于运输选项( express 、标准等)的单选按钮,我希望它显示 <%= shipping_delivered_day %> 的动态值,以显示在用户使用 AJAX 单击按钮旁边的 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 值,所以我需要 rails 来处理它。我将如何从单选按钮单击发送 JS 请求?

最佳答案

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 %> )。

关于ruby-on-rails - Rails + 单选按钮 + AJAX : How to render partial on radio button click?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16863443/

10-11 23:11
查看更多