简体   繁体   中英

Ruby on Rails: How to gather values for child tables from a form?

Referencing question #2013421, I have the following RoR models:

class Game < ActiveRecord::Base
  has_many :piles
end

class Pile < ActiveRecord::Base
  belongs_to :game
end

For the sake of argument, suppose Game has an attribute name , and Pile has an attribute type , both string . There are precisely 10 piles per game.

I would like a single HTML form to create a new Game, similar to the one generated by ruby script\\generate scaffold ; that is like:

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

How can I add fields to the form in order to read values for the Pile.type field for each of the 10 piles?

You can do something like this:

model:

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

in your form:

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

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

 <% end %>

Consider that 'type' method-keyword-column is reserved by ActiveRecord to achieve polymorphic associations

see a good guide about nested forms in rails

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM