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
我正在尝试在 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