在Rails中使用多个模型的嵌套表单

时间:2015-12-02 15:49:19

标签: ruby-on-rails forms

我有3个模型,我希望能够使用Sample controller new action上的表单同时创建所有模型。

有没有办法让一个表单包含所有模型的所有表单字段?

这些是模型:

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为this RailsCast正是您所需要的。