1

Я пытаюсь создать @booking и @booking.build_passenger в form_for с вложенными атрибутами в Rails 4.2.1ActionController «Нет явного преобразования символа в Integer» для новой записи в Rails 4.2.1

Я получаю ошибку: enter image description here

Как вы видите на консоли в нижней части изображения:
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()

ответ

2

Ваши booking_params должно быть что-то вроде:

def booking_params 
    params.require(:booking).permit(:flight_id, :num_tickets, passenger_attributes: [:id, :name, :email]) 
end 
+1

Это пятно на. Посмотрите на это с точки зрения [DRY] (https://en.wikipedia.org/wiki/Don%27t_repeat_yourself). Добавление вложенных атрибутов для параметров вашего пассажира. При добавлении вложенных параметров этот путь ставит их в качестве последнего аргумента разрешения() или вы получите ошибки. – Shadoath

+0

@eugen: Спасибо, это сработало! – Andrius

Смежные вопросы