2010-06-22 58 views
0
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> 

这里是我的职位型号:为无未定义的方法:NilClass但对象存在于控制台

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: "[email protected]", name: "test1",.... 
>> post.author.name 
=> "test1" 

事实上,如果我改变post.author.name到post.user_id,它会显示正确的ID(即2) ....

什么问题?

非常感谢。

+0

您能否显示呈现_post.html的控制器操作方法?以及呈现它的视图? – Pablo 2010-06-22 11:04:27

回答

0

两件事情:

  1. 你确定你在控制台检查后是在视图被访问的同一个?也许你正在做类似post = Post.first这不是正确的吗?
  2. 在提取的视图源中,您引用了非实例变量。你是否在视图的其他地方分配post(如循环)?如果不是,将其更改为@post可能会这样做。虽然这是不太可能的,因为错误信息可能会有所不同。
+0

是的,这是我唯一的帖子,但我通过调用一个部分循环遍历所有帖子。 >> Post.all => [#<帖子ID:1,内容:“正在尝试”,user_id:2,created_at:“2010-06-22 04:24:53”,updated_at:“2010-06-22 4点24分53" 秒>] – user357203 2010-06-22 06:25:13

1

尝试指定的值:foreign_key

0

你也必须指定:foreign_key => “USER_ID”。默认情况下,Rails将使用传递给belongs_to的符号来派生外键字段。在你的情况下,即使你已经指定了类名,它会查找author_id作为外键。 class_name选项告诉Rails需要什么样的对象。

相关问题