Rails:显示collection.select的下拉菜单

时间:2013-06-13 07:59:23

标签: drop-down-menu ruby-on-rails-3.2

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

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

有人可以帮忙吗?

1 个答案:

答案 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