我有User has_one Shop
& Shop has_many Branches
。
当我这样做时:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@shop = @user.shop
@branches = @shop.branches
end
...
@user
&amp; @shop
实例变量在视图中工作,但@branches
给出了错误:
undefined method `branches' for nil:NilClass
Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:13:in `show'
但是,如果我在控制器中放弃@branches
:
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
@shop = @user.shop
end
...
....并在视图中使用它:
@shop.branches
....它有效!在视图中始终使用@shop.branches
有点累,所以我更喜欢使用@branches
。
答案 0 :(得分:2)
该消息表明控制器中@shop
为零。如果它在视图中使用相同的请求,则意味着在控制器之后的其他地方肯定设置了@shop
。