У меня есть модель, которая имеет произвольное число дочерних объектов. Поскольку простота позволяет, называют Заказы объектов и Объекты. Я хотел бы иметь создать форму Заказов, где я ввел информацию для заказа, а также добавляю столько объектов, сколько я хочу. Если я нажму кнопку "Add another item", то новый набор элементов формы будет добавлен для ввода новых данных, сумм, и т.д.
Я мог вырубить это в чистом JavaScript, но я вполне уверен должно быть более волшебное, railsish способ сделать это, возможно, с частичным представлением или чем-то. Я просто немного слишком плохо знаком с направляющими для знания, каково это.
Что лучший способ состоит в том, чтобы динамично добавить новые элементы формы, и затем получить доступ к ним в создать контроллере?
Невозможно превзойти этот Railscasts.com учебник, предоставленный Райаном Бейтсом.
Эпизод 196: Форма вложенной модели, pt. 1
Вот пример, который работает только с одним уровнем вложенности
class Company < ActiveRecord::Base
has_many :people, :dependent => :destroy
accepts_nested_attributes_for :people, :allow_destroy => true
end
class person < ActiveRecord::Base
belongs_to :company
end
def new
@company = Company.new
3.times { person = @company.people.build }
end
<% form_for @company do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :people do |builder| %>
<%= render "people_fields", :f => builder %>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
<p>
<%= f.label :name, "Person" %>
<%= f.text_field :name %>
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove" %>
</p>