在我的rails应用程序中,我在下拉列表中显示子类别。
<%= f.fields_for :product_sub_categories do |product_sub_category| %>
<%= product_sub_category.collection_select :sub_category_id, @sub_categories, :id, :sub_category, {:include_blank => 'Select a Sub Category'} %>
<% if @product.product_sub_categories.size > 1%>
<%= product_sub_category.link_to_remove "Remove", :class => "subcatlink" %>
<%end%>
<% end %>
<%= f.link_to_add 'Add', :product_sub_categories, "data-association-insertion-node"=> ".product_sub_categories", "data-association-insertion-position" => "append", "data-type" => "link", :class => "subcatlink"%>
但默认情况下它不显示下拉列表。当用户点击“添加”链接时,它会显示下拉列表。
我猜它不会进入循环“f.fields_for:product_sub_categories do | product_sub_category |”
如何编写代码,以便显示一个下拉菜单,并点击“添加”添加其他菜单?
有人可以帮忙吗?
答案 0 :(得分:0)
您需要将子项的初始(未保存)实例添加到父对象,以便在呈现子项时它将在添加链接之前呈现单个空白表单。
如果父母没有孩子,您可以选择这样做,或者总是这样做以强制始终显示空白表单。例如:
控制器:
def edit
@parent = Parent.find(params[:id])
@parent.sub_categories << SubCategory.new if @parent.sub_categories.blank? # only if no children already
# or
@parent.sub_categories << SubCategory.new # always
end