0

我有用户、问题和答案模型。

用户has_many :questionshas_many :answers

问题has_many :answersbelongs_to :user, :foreign_key => "user_id"

回答belongs_to :question, :foreign_key => "question_id"belongs_to :user, :foreign_key => "user_id"

在控制台中:

>> Question.find(2).answers.each{|a| p a.user.name}

=> "example user"

鉴于:

- @question.answers.each do |a|
  = a.user.name

但是视图返回undefined method 'name' for nil:NilClass

在控制器中:

@question = Question.find(params[:id])

id参数为2

如果我将视图切换到

Question.find(2).answers.each do |a|
  = a.user.name

然后视图正确显示。

这里发生了什么?

4

1 回答 1

2

好像您在视图中创建了新的@question.answer,而这个答案没有相关用户。尝试使用隐藏字段在表单中设置 user_id 或者如果 a.user 在您的视图中,您可以写 = a.user.name

于 2013-02-28T14:03:01.743 回答