2011-09-14 44 views
0

這不是你如何傳遞一個對象的部分:如何將對象傳遞給部分?

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

我的部分看起來像:

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

我得到以下錯誤:

路由錯誤

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 } %> 

然後,在你的部分,稱之爲無@,e.g:

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

我得到未定義的局部變量或方法'答案' –

+1

當你使用渲染partial:'form_for_anser_comment',locals:{answer:answer)時,局部人可能只會被傳遞。關鍵位是在渲染 –

+2

@ rm-rf之後呈現的部分詞是正確的,我錯過了':partial => ..'關鍵字,我的壞 - 修正了。另外,請注意他的評論有Ruby 1.9.x語法(如果這就是你使用的1.8.7版本,將不起作用)。 – sa125