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 に答える