我目前正在使用rails 5.0.1中的预订系统。我有一个用户,房间和预订模型:
user.rb
has_many :reservations
room.rb
has_many :reservations
reservation.rb
belongs_to :user
belongs_to :room
reservation_controller.rb
class ReservationsController < ApplicationController
before_action :authenticate_user!
def create
@reservation = current_user.reservations.create(reservation_params)
redirect_to @reservation.room, notice: "Your reservation has been created"
end
private
def reservation_params
params.require(:reservation).permit(:start_date, :end_date, :price, :total, :room_id, :user_id)
end
end
_form.html.erb(查看)
<%= form_for([@room, @room.reservations.new]) do |f| %>
<%= f.text_field :start_date %>
<%= f.text_field :end_date %>
<%= f.hidden_field :room_id, value: @room_id %>
<%= f.hidden_field :price, value: @room_price %>
<br>
<%= f.submit "Book Now", class: "btn btn-primary" %>
<% end %>
我收到此错误:
为什么我的@ reservation.room nil?
如果我输入rails控制台:@reserveration = current_user.reservations.create(reservation_params) 然后我得到: NameError:未定义的局部变量或方法`current_user&#39; for main:Object
如果您需要更多信息,请告诉我们!
答案 0 :(得分:2)
为什么我的实例变量(
@reservation
)为零?
不是。 @reservation.room
为零。
在你问“那为什么会这样?”之前,请检查你发布到行动的params。
答案 1 :(得分:0)
@room变量丢失,然后我必须合并它!
<强> reservation_controller.rb 强>
synchronized {}