Ruby on Rails: как собрать значения для дочерних таблиц из формы? - PullRequest
0 голосов
/ 07 января 2010

Ссылочный вопрос # 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.type для каждого из 10 столбцов?

1 Ответ

3 голосов
/ 07 января 2010

Вы можете сделать что-то вроде этого:

модель:

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 для достижения полиморфных ассоциаций

см. хорошее руководство по вложенным формам в рельсах

...