我有一个嵌套的表单,例如:
<% form_for @invoice do |f| %>
<%= render :partial => "invoice_item_fields", :locals => {:f => f} %>
<% end %>
和_invoice_items_fields:
<% f.fields_for :invoice_items do |builder| %>
<%= link_to_remove_fields "remove", builder %>
<%= builder.collection_select(:product_id, Product.all, :id, :name) %>
<%= builder.text_field :quantity, :size => 4,%>
<% end %>
当我提交表单但未通过验证时,它会再次呈现新操作。事物是选定的值:product_id没有被记住,但是:数量是可以的。 我读到我应该在控制器中使用所选选项的值设置一个实例变量,然后执行以下操作:
<%= builder.collection_select(:product_id, Product.all, :id, :name, :selected => @selected_product) %>
但事情是应用程序可能有很多:invoice_items,所以我不知道该怎么做选择字段“记住”值。
感谢。
答案 0 :(得分:0)
您可以发布您的控制器代码吗?我想看看你在哪里设置发票&amp; invoice_item字段以及您如何处理表单。我最近建了一张发票&amp; line_item应用程序,可能有一些想法... [抱歉,我无法发表评论,但未达到该权限级别。]
答案 1 :(得分:0)
我在另一篇文章中解决了这个问题。事情是我的product_id是和字符串而不是db级别的整数。