0

認証のためのデバイスの使用undefined method 'size' for nil:NilClassは、次のビュー コードから発生します。

<% @relationships.each do |relationship| %>
  <div><%= relationship.box.size  %></div>
<% end %>

コントローラーで @relationships を次のように定義した場合のみ

@relationships = current_user.relationships

しかし、私がそれを次のように定義したときではありません

@relationships = User.find(current_user.id).relationships

これらの 2 つの定義は同一であるべきではありませんか?

私は次の協会を持っています:

class Relationship < ActiveRecord::Base

  belongs_to :user
  belongs_to :box

end

class User < ActiveRecord::Base

  has_many: :relationships
  has_many: :boxes, through: :relationships

end

class Box < ActiveRecord::Base

  has_many: :relationships
  has_many: :users, through: :relationships

end

正しい情報を提供できたことを願っています。スタック オーバーフローに関する回答が見つからなかったのはこれが初めてです。前もって感謝します!

4

1 に答える 1

0

同じアクションで current_user (current_user.relationships.new) を介して別のオブジェクトを作成しました。

@relationship = current_user.relationships.new
@relationships = current_user.reload.relationships #reload required

最初の割り当てに次の変更を加えた後、リロード呼び出しを削除できます。

@relationship = Relationship.new
@relationships = current_user.relationships

初心者を助けてくれた@AmitKumarGuptaに感謝します!

于 2012-12-29T16:58:50.163 に答える