我有用户,问题和答案模型。
用户has_many :questions
和has_many :answers
问题has_many :answers
和belongs_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
然后视图显示正确。
这里发生了什么?
答案 0 :(得分:2)
好像你在视图中创建了新的@ question.answer,这个答案没有相关的用户。尝试使用隐藏字段在表单中设置user_id,或者如果视图中有a.user,则可以写= a.user.name