我正在使用嵌套路由,我在routes.rb中有:booking表和:hotel表
resources :hotels do
resources :bookings
end在我的酒店show.html。erb
<%= link_to 'Book Now', new_booking_path(:hotel_id => @hotel.id) %>在我的bookings_controller.rb
def new
@booking = @hotel.bookings.build
end单击该链接时,将生成一个链接
localhost:3000/bookings/new?hotel_id=4但是我仍然得到一个错误
NoMethodError
Undefined method 'bookings' for nil:NilClass
Extracted source from
def new
@booking = @hotel.bookings.build
end发布于 2015-06-06 19:25:07
看起来您没有在控制器的new方法中检索酒店对象。因此,当您在@hotel变量上调用bookings时,会抛出nil异常。它应该看起来像这样:
bookings_controller.rb:
def new
@hotel = Hotel.find(params[:hotel_id])
@booking = @hotel.bookings.build
end希望它能帮上忙!
发布于 2015-06-06 19:25:15
我想你在这里找“酒店”是个错误,请这样做-
在bookings_controller.rb中-
def new
@hotel = Hotel.find(params[:hotel_id])
if @hotel.present?
@booking = @hotel.bookings.build
render :new
else
redirect_to root_path
end
endhttps://stackoverflow.com/questions/30682151
复制相似问题