Я пытаюсь создать @booking
и @booking.build_passenger
в form_for
с вложенными атрибутами в Rails 4.2.1ActionController «Нет явного преобразования символа в Integer» для новой записи в Rails 4.2.1
Как вы видите на консоли в нижней части изображения:
1. params.require(:booking)
возвращает хэш-как Params для @booking
2. params.class
возвращается ActionController::Parameters
Как params
, кажется, правильно вести себя, IMO проблема скрывается где-то в виде:
<%= form_for @booking do |f| %>
<%= f.hidden_field :flight_id, value: params[:flight_id] %>
<%= render 'flights/flight_info' %>
<div class="field">
<b><%= f.label :num_tickets, "Tickets" %></b>
<%= f.select(:num_tickets, @num_tickets) %>
</div><br>
<h4>Passenger info:</h4>
<%= f.fields_for @booking.build_passenger do |pass| %>
<div class="field">
<%= pass.label :name %>
<%= pass.text_field :name %>
</div>
<div class="field">
<%= pass.label :email %>
<%= pass.email_field :email %>
</div>
<% end %>
<%= f.submit 'Book Flight!' %>
<% end %>
Бронирование модели:
class Booking < ActiveRecord::Base
belongs_to :flight
belongs_to :passenger
accepts_nested_attributes_for :passenger
end
Вопрос: Где и как я должен изменить свой код для приложения, чтобы начать создавать @booking
экземпляров + @booking.build_passenger()
Это пятно на. Посмотрите на это с точки зрения [DRY] (https://en.wikipedia.org/wiki/Don%27t_repeat_yourself). Добавление вложенных атрибутов для параметров вашего пассажира. При добавлении вложенных параметров этот путь ставит их в качестве последнего аргумента разрешения() или вы получите ошибки. – Shadoath
@eugen: Спасибо, это сработало! – Andrius