嵌套表格
<%= nested_form_for(@bill) do |f| %>
<p><%= f.link_to_add "Add Product", :bill_line_items %> </p>
部分帐单订单项
<%= javascript_include_tag 'bill'%>
<%= f.hidden_field :bill_id %>
<%- prices = Hash[Product.all.map{|p| [p.id, p.price]}].to_json %>
<%= f.label :product_id %>
<%= f.collection_select :product_id ,Product.all,:id,:name, :class => 'product', :prompt => "Select a Product", input_html: {data: {prices: prices}}%> <br/ >
<%= f.label :price, "price"%>
<%= f.text_field :price, :size=>20, :class =>"price" %><br/>
bill.js
jQuery(document).ready(function(){
jQuery('.product').change(function() {
var product_id = jQuery(this).val();
var price = eval(jQuery(this).data("prices"))[product_id];
jQuery('.price').val(price);
});
});
Rails 3.2问题: 再次点击Add Product&amp;选择产品 当我们选择第二个产品时,第二个产品的价格会覆盖第一个选定产品的价格。 请求帮助。
答案 0 :(得分:1)
这是我到达的解决方案。我相信这是一个非常糟糕的方法,但它完成了工作。
jQuery(document).ready(function(){
jQuery("customer-outer").delegate("select", "change", function(event){
var selectElement = jQuery(this);
var productId = selectElement.val();
var price = eval(selectElement.data('prices'))[productId];
var lineItemWrapperElement = selectElement.parent().parent();
jQuery("input.price", lineItemWrapperElement).val(price);
});
});
customer-outer是div类,定义为new.html和edit.html。如果有人为此找到了合适的解决方案,请分享。