2015-12-02 6 views
0

У меня есть 3 модели, и я хотел бы иметь возможность создавать их в одно и то же время, используя форму нового действия контроллера Sample.Вложенные формы с несколькими моделями в 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, в то время как моя модель образца принадлежит, которая, кажется, вмешивается в вложенные формы, но логически выборка должна принадлежать_to – dashedstripes