0

在我的 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|”

如何编写代码以显示一个下拉菜单并通过单击“添加”添加其他菜单?

有人可以帮忙吗?

4

1 回答 1

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
于 2013-06-13T08:18:18.813 回答