我的电子商务网站有一个结帐表单。它有用于发货选项(快递,标准等)的单选按钮,我希望它显示<%= 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请求?
答案 0 :(得分: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上运行多个函数。在您的特定实例中,您希望您的部分代码包含一些代码,这些代码将决定您的送货日期。您可以使用本地(render :partial => "ship_3day", :locals => {:p => @product}
)呈现部分,并让部分返回相应的结果(<%= p.shipping_delivered_day %>
)。