0

私は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&@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

4

1 に答える 1

2

このメッセージは@shop、コントローラーでそれが nil であることを示しています。同じリクエストでビューで機能する場合、それは確か@shopにコントローラーの後に別の場所に設定されていることを意味します。

于 2012-05-18T17:53:06.820 に答える