0

参考问题 #2013421,我有以下 RoR 模型:

class Game < ActiveRecord::Base
  has_many :piles
end

class Pile < ActiveRecord::Base
  belongs_to :game
end

为了论证起见,假设Game有一个属性name,并且Pile有一个属性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 %>

如何在表单中添加字段以读取Pile.type10 堆中每一堆的字段值?

4

1 回答 1

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 以实现多态关联

查看有关 Rails 中嵌套表单的良好指南

于 2010-01-07T14:45:04.610 回答