首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nil:NilClas的未定义方法'bookings‘

nil:NilClas的未定义方法'bookings‘
EN

Stack Overflow用户
提问于 2015-06-06 19:17:32
回答 2查看 131关注 0票数 1

我正在使用嵌套路由,我在routes.rb中有:booking表和:hotel表

代码语言:javascript
复制
resources :hotels do
  resources :bookings
end

在我的酒店show.html。erb

代码语言:javascript
复制
<%= link_to 'Book Now', new_booking_path(:hotel_id => @hotel.id) %>

在我的bookings_controller.rb

代码语言:javascript
复制
def new 
  @booking = @hotel.bookings.build 
end

单击该链接时,将生成一个链接

代码语言:javascript
复制
localhost:3000/bookings/new?hotel_id=4

但是我仍然得到一个错误

代码语言:javascript
复制
NoMethodError

Undefined method 'bookings' for nil:NilClass

Extracted source from

def new 
  @booking = @hotel.bookings.build
end
EN

回答 2

Stack Overflow用户

发布于 2015-06-06 19:25:07

看起来您没有在控制器的new方法中检索酒店对象。因此,当您在@hotel变量上调用bookings时,会抛出nil异常。它应该看起来像这样:

bookings_controller.rb:

代码语言:javascript
复制
def new
  @hotel = Hotel.find(params[:hotel_id])
  @booking = @hotel.bookings.build
end

希望它能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2015-06-06 19:25:15

我想你在这里找“酒店”是个错误,请这样做-

在bookings_controller.rb中-

代码语言:javascript
复制
def new
  @hotel = Hotel.find(params[:hotel_id])
  if @hotel.present?
    @booking = @hotel.bookings.build
    render :new
  else
    redirect_to root_path
  end 
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30682151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档