Showing app/views/posts/_post.html.erb where line #4 raised:
undefined method `name' for nil:NilClass
Extracted source (around line #4):
1: <p>
2: <b>Post Content:</b>
3: <%=h post.content %> by
4: <%=h post.author.name %>
5: </p>
这是我的帖子模型:
class Post < ActiveRecord::Base
belongs_to :board
belongs_to :author, :class_name => "User"
end
奇怪的是,如果我注释掉post.author.name,它就可以了。和.... 我在控制台中尝试过,它运行正常:
>> post
=> #<Post id: 1, content: "trying", user_id: 2, created_at: "2010-06-22 04:24:53", updated_at: "2010-06-22 04:24:53">
>> post.author
=> #<User id: 2, login: "test1@test.com", name: "test1",....
>> post.author.name
=> "test1"
事实上,如果我将post.author.name更改为post.user_id,它会显示正确的ID(即2)....
问题是什么?
非常感谢。
答案 0 :(得分:1)
尝试指定值:foreign_key
答案 1 :(得分:0)
两件事:
post = Post.first
这样的事情并且它不是正确的?post
(如循环)?如果没有,将其更改为@post
可能会这样做。虽然这不太可能,但由于错误消息可能会有所不同。答案 2 :(得分:0)
您还必须指定:foreign_key =&gt; “用户身份”。默认情况下,Rails将使用传递给belongs_to的符号来派生外键字段。在您的情况下,即使您指定了类名,它也会将author_id作为外键。 class_name选项告诉Rails期望什么类型的对象。