嘿所有, 我有一个非常奇怪的问题,并且无法隔离原因。我觉得这是一个简单的解决方案,但我希望能够朝着正确的方向努力。我有以下型号:
class User < ActiveRecord::Base
has_many :pnotes
class Pnote < ActiveRecord::Base
belongs_to :preport
belongs_to :user
class Preport < ActiveRecord::Base
has_many :pnotes, :dependent=>:destroy
我的架构的Pnote部分看起来如此:
create_table "pnotes", :force => true do |t|
t.integer "preport_id"
t.integer "user_id"
t.text "content"
t.datetime "created_at"
t.datetime "updated_at"
end
我正在尝试在Preport的显示页面上显示与给定Preport关联的所有Pnotes
我的Preport Controller具有以下show动作代码:
def show
@board = Board.find(params[:board_id])
@preport = @board.preport
@pnotes = @preport.pnotes
@pnote=@preport.pnotes.build
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @preport }
end
end
所以现在在Preports文件夹中的show.html.erb中,我试图显示Pnotes的列表:
<ul>
<% @pnotes.each do |pnote| %>
<li><%= pnote.user.login %><span>-<%=pnote.content %></span></li>
<% end %>
</ul>
“login”是Devise Authentication Gem附带的标准字段。
然而,这给了我以下错误:
nil的未定义方法`login':NilClass
如果我将视图更改为:
我明白了:
#<User:0x106c25888>-Testing
,因此它似乎正在识别关联用户,但无法获取其属性。
任何建议都将不胜感激!我觉得这里有一个相当小的疏忽,但我无法区分确切的位置
谢谢!
答案 0 :(得分:1)
除非您使用我不知道的非常旧版本的Devise,否则用户模型将没有login
属性。
请尝试email
。