2011-01-17 23 views
1

'has_one'関係を持つモデルでネストされた属性に関する助けが必要です。ruby​​ on rails- 'has_one'関係のネストされた属性

モデル調査は、1つの質問があり モデル質問がある1

iは

def new 
    @survey = Survey.new 
    @survey.build_question # build one question 
    @survey.question.answer.build #this part is not working 

end 

以下のコードで「答え」を構築するにはどうすればよい誰がどのような答えを構築するために私に言うことができるしてください答え"@ survey.question.answer.build"というコードが正しくありません。

あなたの助け

答えて

2

のための多くの多くのおかげで、それがまだ保存されていないので、あなたが新たに作成されたQuestionインスタンス上の答えを構築する必要があります。

@survey = Survey.new 
@question = @survey.build_question 
@answer = @question.build_answer 
# ... at some point in the future 
@survey.save
+0

こんにちは、ありがとうたくさんの提案が、モデルの間に 'has_one'関係があるときに '@ survey.question.build'は動作していないようです。私は次のフォーマット '@ survey.build_question'を使用しなければなりません。そうでないと、次のエラーメッセージが表示されます。 '未定義のメソッド 'build'はnilになります:NilClass ' – Kim

+0

コードを更新しました。 –

+0

私が使用する場合--- @survey = Survey.new @question = @ survey.build_question @answer = @ question.answer.build、どうすれば@answer部分に取り組んでいますか? : – Kim

1
@survey = Survey.new 
@survey.question = Question.new 
@survey.question.answer = Answer.new 
@survey.question.answer = (whatever) 
@survey.save! 

(または単に@survey.saveあなたは例外を表示したくない場合)

あなたはそれが簡単にあなたのビューでインスタンス変数としてこれらにアクセスするようにしたい場合は、それらのいずれかを割り当てることができますあなたがそれらを作成した後に変数に追加すると、関連は維持されます:

@question = @survey.question 

これはあなた次第です。

+0

ありがとう:)コードをもっとはっきりさせる – Kim

関連する問題