使用设计进行身份验证时,会从以下视图代码中引发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
这两个定义不应该相同吗?
我有以下关联:
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
我希望我提供了正确的信息;这是我第一次无法找到堆栈溢出的答案。提前谢谢!
答案 0 :(得分: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帮助新手!