Rails 4.2.1 中新记录的 ActionController“没有将符号显式转换为整数”

ActionController “No explicit conversion of Symbol into Integer” for new record in Rails 4.2.1

我正在尝试在 form_for 中使用 Rails 4.2.1

中的嵌套属性创建 @booking@booking.build_passenger

我得到的错误:

正如您在图像底部的控制台中看到的那样:
1. params.require(:booking) returns @booking
的类似哈希的参数 2. params.class returns 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()

您的 booking_params 需要类似于:

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