Ruby on Rails: How to gather values for child tables from a form?
-
19-09-2019 - |
Question
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?
Solution
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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow