2013-06-13 56 views
0

在我的Rails應用程序中,我在下拉列表中顯示子類別。Rails:顯示下拉菜單的collection.select

<%= 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

您需要向父對象添加子對象的初始(未保存)實例,以便在呈現子對象時它將在添加鏈接之前呈現單個空表單。

如果家長沒有孩子,您可以選擇這樣做,或者始終這樣做以強制空白表單始終顯示。例如:

控制器:

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