2012-09-19 26 views
3

我已經在我的模型如下:如何使用simple_fields_for創建相同的嵌套類型的許多對象

company.rb 

has_many :merits 
accepts_nested_attributes_for :merits 

在我的控制器:

def new 
    @company = Company.new 
    @company.merits.build 
end 

在我的表格:

= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| 

    = f.simple_fields_for :merits do |m| 
    = m.input :description, :required => false 
    = m.input :picture, :required => false 

這產生一個哈希如下:

.."merits_attributes"=>{"0"=>{"description"=>"stove", "picture"=>"www.it.com/stove.png"}}...

我想有什麼是多目標如下:

... 「merits_attributes」=> { 「0」=> { 「說明」=> 「火爐」, 「圖片」=>」 www.it.com/stove.png"},"1"=>​​{"description"=>"fridge「,」picture「=>」www.it.com/fridge.png「}} ...

我能做到這一點,我怎麼能做到這一點,如果是這樣的控制器將使用它創建多個對象:

def create 
@company = Company.new(params[:company]) 
     if @company.save 
     sign_in @company 
     redirect_to root_path 
     else 
     render :new 

end 

回答

6

如果您在窗體上要幾個merits只是建立相同數量的Ø f你的控制器的優點:

def new 
    @company = Company.new 
    3.times { @company.merits.build } # will build 3 merits 
end 
+0

哇,我會試試看。謝謝納什。 – chell

+0

是否simple_fields_for有一個標準的機制來做到這一點與使用JavaScript的任意數量的字段? – olleicua

+3

@olleicua - 號碼嘗試使用繭寶石。 –

相關問題