2015-12-02 41 views
0

我有3個模型,我希望能夠使用Sample controller新動作上的表單同時創建它們。在Rails中嵌入多個模型的表格

有沒有一種方法,我可以有一個窗體的所有模型的所有表單域?

這些機型:

class Sample < ActiveRecord::Base 
    belongs_to :song 
    accepts_nested_attributes_for :song 
end 

class Song < ActiveRecord::Base 
    has_many :samples 
    belongs_to :artist 
end 

class Artist < ActiveRecord::Base 
    has_many :songs 
end 

這裏是我使用的形式,我能夠創造新的歌曲,但不是藝術家。

<%= form_for(@sample) do |f| %> 
    <% if @sample.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@sample.errors.count, "error") %> prohibited this sample from being saved:</h2> 

     <ul> 
     <% @sample.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <%= f.fields_for :song do |song_form| %> 
    <div class="field"> 
     <%= song_form.label "Song Name" %></br> 
     <%= song_form.text_field :name %> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :timecode %><br> 
    <%= f.text_field :timecode %> 
    </div> 
    <div class="field"> 
    <%= f.label :song_id %><br> 
    <%= f.collection_select(:song_id, @songs, :id, :name) %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

感謝您的幫助。

回答

0

我認爲this RailsCast正是你所需要的。

+0

我看過RailsCast,但它似乎是has_many模型,而我的示例模型是belongs_to,它似乎搞亂了嵌套窗體,但邏輯示例需要是belongs_to – dashedstripes