Мне нужно использовать вложенные формы по заданию, над которым я работаю, и я застрял, потому что мои вложенные атрибуты формы не отправляются в базу данных.Вложенные атрибуты формы не сохраняются
Вот что мой контроллер выглядит
def new
@booking = Booking.new
params[:no_of_passengers].to_i.times { @booking.passengers.build }
end
def create
@booking = Booking.new(booking_params)
respond_to do |format|
if @booking.save
format.html { redirect_to '/booking_confirmed', notice: 'Booking was successfully created.' }
format.json { render :show, status: :created, location: @booking }
else
format.html { render :new }
format.json { render json: @booking.errors, status: :unprocessable_entity }
end
end
end
private
def booking_params
params.permit(
:airline, :origin, :destination, :departure_date, :departure_time, :arrival_date,
:arrival_time, :flight_id, :price, :no_of_passengers, :user_id, :booking,
passenger_attributes: [
:id,:booking_id, :name, :email,:done,:_destroy
]
)
end
Вот связь между моделями
class Booking < ActiveRecord::Base
has_many :passengers
accepts_nested_attributes_for :passengers, reject_if: lambda { |attributes| attributes['name'].blank? }
end
class Passenger < ActiveRecord::Base
belongs_to :bookings
end
А вот форма
<%= form_for @booking do |b| %>
<%= b.fields_for :passengers do |p| %>
<%= p.text_field :name, placeholder: "Passenger Name" %>
<%= p.text_field :email, placeholder: "Passenger Email" %>
<% end %>
<% end %>
Я проверил таблицу пассажира с помощью Passenger.all
в консоли rails и ничего не возвращает.
Что я делаю неправильно?
Можете ли вы показать нам отправленные параметры, которые вы получаете из своей формы? –
, пожалуйста, покажите, какие значения являются параметрами 'params' и' booking_params', когда запрос отправлен. – tompave
'Start POST"/заказы "для 127.0.0.1 в 2015-11-08 14:00:49 +0100 Обработка BookingsController # создать в HTML Параметры: { "utf8" => "✓", "authenticity_token" => "S95Splfs70P954xJ/AN8t9k8E8OBvwCRdwrx5nSSwziLo/GFF4I102/cbB3ZUDToz/oofuwZCQIr9tEmsZ + W4w == "," booking "=> {" flight_id "=>" 608 "," user_id "=>" "," no_of_passengers "=>" "," passengers_attributes "=> {" 1446987645041 "=> {" имя "=>" ade "," email "=>" ade "," _destroy "=>" false "}}}," commit "=>" Book Now "} Параметр unpersmitted: messages_attributes ' –