在railscasts.com上,第74集提供了一种将嵌套字段的部分表单动态添加到现有表单的方法。这是扮演魔术的辅助方法:
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render :partial => association.to_s, :locals => {:f => builder, :i_id => 0}
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{j fields}\")")
end
以下是在视图中添加部分表单的示例:
<p><%= link_to_add_fields t("Add Product"), f, :order_items %></p>
以下是我们的rails应用中使用的部分表单order_items
的示例:
<%= f.input :quote_id, :label => t("Quote#"), :collection => @quotes, :include_blank => true %>
.......
order_items
有一个@quotes
。当用户选择供应商时,我们只想提供仅属于供应商的报价(@quotes = @ quotes.where(:supplier_id =&gt; the_supplier_id)。问题是@quotes on partial {{1第一次加载后无法更新(或者我们不知道如何)。加载后是否可以使用ajax调用更新部分order_items
上的@quotes
?