2014-12-05 59 views
0

我延長一些開源項目的回報率,我有以下問題:原來的程序員通過收集到的部分像這樣回報率:傳遞集合部分將無法正常工作

<%= render partial: "option", collection: survey.options %> 

,然後他們在部分使用它,例如這樣

<%= option.name %> 

所有閱讀本指南http://guides.rubyonrails.org/layouts_and_rendering.html

的調查也有answer_pairs時工作正常,是可以理解的(與字符串字段「ANSWER1」和「ANSWER2」),我嘗試將它們傳遞給另一部分是這樣

<%= render partial: "table_head", collection: survey.answer_pairs %> 

,我嘗試使用它在部分_table_head.html.erb這樣

<td><b><%= answer_pair.answer2 %></b></td> 

但Rails的給了我一個NameError - 未定義的局部變量或方法`answer_pair」爲#<#:0x007fa07b9e0098>:應用程序/視圖/調查/ _table_head.html.erb:1

誰能告訴我爲什麼,請? 當我還通過了「爲:」像這樣

<%= render partial: "table_head", collection: survey.answer_pairs, as: :answer_pair %> 

它承認收集的第一answer_pair,但僅此而已。 它認識到集合中的所有answer_pairs,如果我這樣做

<% survey.answer_pairs.each do |pair| %> 
    <td><b><%= pair.answer2 %></b></td> 
<% end %> 

任何幫助表示讚賞!

回答

0

自動生成的變量以模板命名,而不是集合名稱。如果您以<td><b><%= table_head.answer2 %></b></td>的身份訪問它,那麼它應該按照您的預期工作。

+0

感謝您的提示!你對自動生成的變量的名稱是正確的,但是當我這樣做,就像你說它再次停止在第一次answer_pair之後遍歷集合:(確實有一個想法是爲什麼? – KKrenz 2014-12-06 08:30:46