Rail 5: сохранение полей из цикла во вложенной форме
У меня есть приложение, где пользователи могут запросить участие в мероприятиях. Когда администраторы создают События, они добавляют Пространства, которые будут доступны для подачи заявки (например, "столы", "стойки" и т. Д. И их цену).
Когда пользователь инициализирует мастер запросов, запрос автоматически создается, и для запроса автоматически создается RequestSpace, по одному для каждого из Event.spaces, со значением по умолчанию, равным 0. Пользователь может запросить желаемую сумму каждого тип пространства путем увеличения числа в форме.
Это похоже на корзину, в которой пользователь меняет количество товара в числовом поле, за исключением того, что здесь продукты (пробелы) предопределены событием.
Это означает, что форма запроса получает числовое поле для каждого ассоциированного пространства запросов. У меня есть эта форма рендеринга в представлении, и она выглядит так, как я хочу. Проблема в том, что я не знаю, как сохранить каждую строку в действии обновления в контроллере запросов.
Соответствующий код из моделей:
class Event < ApplicationRecord
has_many :requests, dependent: :destroy
has_many :spaces, dependent: :destroy
...
class Space < ApplicationRecord
belongs_to :event
has_many :request_spaces
...
class Request < ApplicationRecord
belongs_to :event
has_many :request_spaces
accepts_nested_attributes_for :request_spaces
...
class RequestSpace < ApplicationRecord
belongs_to :request
belongs_to :space
...
Форма:
<%= form_for(@request, local: true) do |form| %>
...
<% @request.request_spaces.each do |rs| %>
<%= form.fields_for :request_spaces, rs do |s| %>
<%= s.number_field :amount, min: "0", max: "#{rs.space.max_amount}" %>
<% end %>
<% end %>
...
<% end %>
Сильные параметры в request_controller.rb:
params.require(:request).permit(<other params omitted>, reqeust_spaces_attributes:[:id, :amount])
Когда я сохраняю изменения в форме, поле RequestSpaces: amount не обновляется. Есть идеи, как решить эту проблему в контроллере?
РЕДАКТИРОВАТЬ:
Этот SO вопрос / ответ описал аналогичную проблему и вдохновил решение цикла для полей формы: Rails просматривает данные в поле формы