Итак, я работаю над проектом "Flight Booker" проекта Odin. https://www.theodinproject.com/courses/ruby-on-rails/lessons/building-advanced-forms. По сути, это то, на что это похоже, и у меня проблема с передачей вложенных атрибутов.
В первую очередь соответствующие модели:
class Booking < ApplicationRecord
belongs_to :passenger
belongs_to :flight
accepts_nested_attributes_for :passenger
end
class Flight < ApplicationRecord
has_many :bookings, dependent: :destroy
has_many :passengers, through: :bookings
belongs_to :to_airport, class_name: 'Airport', foreign_key: 'origin_id'
belongs_to :from_airport, class_name: 'Airport', foreign_key: 'destination_id'
end
class Passenger < ApplicationRecord
has_many :bookings, dependent: :destroy
has_many :flights, through: :bookings
end
Схема пассажира просто содержит адрес электронной почты и имя для прямо сейчас. Но проблема в том, что я передаю информацию контроллеру «бронирования» Вот моя «Новая» форма для бронирования.
<%= form_for @booking do |f| %>
<%= f.hidden_field :flight_id, value: params[:booking][:flight_num] %>
<%= f.hidden_field :passengers_num, value: params[:booking][:passengers_num] %>
<% params[:booking][:passengers_num].to_i.times do |passenger| %>
<%= fields_for :passenger do |passenger| %>
<%= passenger.label :name, 'Name', class: "Label" %>
<%= passenger.text_field :name %>
<%= passenger.label :email, 'email', class: "Label" %>
<%= passenger.email_field :email %>
<% end %>
<% end %>
<%= f.submit "Book Flight" %>
<% end %>
(Пока игнорируйте скрытые поля, они передаются со страницы поиска «Полеты», и я получаю их просто отлично.)
Итак, я получаю несколько форм (поля имени и адреса электронной почты), но когда я "отправляю", я получаю параметры только для последних наборов полей. (Таким образом, если есть 3 набора полей имени / адреса электронной почты, я получу параметры только для последнего).
Возможно, я не понимаю fields_for
, однако, поскольку я не могу найти тонну хороших примеров.
Спасибо!