Ruby on Rails:如何从表单中收集子表的值?

时间:2010-01-07 13:43:22

标签: ruby-on-rails ruby parent-child erb

引用问题#2013421,我有以下RoR模型:

class Game < ActiveRecord::Base
  has_many :piles
end

class Pile < ActiveRecord::Base
  belongs_to :game
end

为了论证,假设Game具有属性namePile具有属性type,两者都string。每场比赛只有10次。

我想要一个HTML表单来创建一个新游戏,类似于ruby script\generate scaffold生成的游戏;就像:

<h1>New game</h1>

<% form_for(@game) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', games_path %>

如何为表格添加字段,以便为10个桩中的每一个读取Pile.type字段的值?

1 个答案:

答案 0 :(得分:3)

您可以这样做:

模型:

class Game < ActiveRecord::Base
  has_many :piles
  accepts_nested_attributes_for :piles
end

在您的表单中:

 <% f.fields_for :piles do |pile_form| %>

   <%= pile_form.label :your_attribute %>
   <%= pile_form.text_field :your_attribute %>

 <% end %>

考虑ActiveRecord保留'type'method-keyword-column以实现多态关联

查看good guide about nested forms in rails