2011-09-14 1 views
0

は、あなたが部分的にオブジェクトを渡すどのようにこのされていません。オブジェクトを部分的に渡すには?

<%= form_for([@question, @answer, @comment]) do |f| %> 

私は次のエラーを取得する:のような

<% @answers.each do |answer| %> 
    ... 
    <%= render 'form_for_answer_comment', :answer => answer %> ? 
<% end %> 

マイ部分的なルックス

ルーティングエラー

No route matches {:action=>"create", :controller=>"questions/answers/comments", :format=>nil, :question_id=>#<Question id: 3, user_id: 1, title: "test", description: "asdfasdfasdfasdfasdfasdf\r\n\r\n\tasdfasd", created_at: "2011-09-10 01:33:38", updated_at: "2011-09-10 01:33:38">, :answer_id=>#<Answer id: nil, user_id: nil, question_id: nil, description: nil, selected: nil, created_at: nil, updated_at: nil>} 

ただし、動作します:

<%= form_for([@question, Answer.first, @comment]) do |f| %> 

@answerオブジェクトをパーシャルに正しく渡さないという問題があると思われます。私は間違って何をしていますか?

+0

は常に、パーシャルにローカル変数のみではなく、インスタンス変数を渡します。 –

答えて

3

試してみてください。

<%= render :partial => 'form_for_answer_comment', :locals => { :answer => answer } %> 

次に、あなたの部分には、例えば、@せずにそれを呼び出す:あなたが持っているよう

<%= form_for([@question, answer, @comment]) do |f| %> 
+0

定義されていないローカル変数またはメソッド 'answer 'が返される –

+1

おそらく、部分的なレンダリングを使用すると、localsは渡されます:' form_for_anser_comment '、locals:{answer:answer}。キービットはレンダリング後に部分的な単語になります –

+2

@ rm-rfが正しかった、私は ':partial => ..'キーワードが欠けていた。また、彼のコメントにはruby 1.9.xの構文があることに注意してください(1.8.7で動作しません)。 – sa125

関連する問題