视图中的未定义方法,但在控制台中工作

时间:2013-02-28 13:21:52

标签: ruby-on-rails

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

用户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

然后视图显示正确。

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

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