我正在扩展一些开源RoR项目,我遇到以下问题:原始程序员将一个集合传递给像这样的部分
<%= render partial: "option", collection: survey.options %>
然后他们在局部使用它,例如像这样
<%= option.name %>
在阅读本指南http://guides.rubyonrails.org/layouts_and_rendering.html
时,一切正常并且可以理解调查还有answer_pairs(字符串字段&#34; answer1&#34;&#34; answer2&#34;)我尝试将它们传递给另一个像这样的部分
<%= render partial: "table_head", collection: survey.answer_pairs %>
我尝试在部分_table_head.html.erb中使用它,就像这样
<td><b><%= answer_pair.answer2 %></b></td>
但是Rails给了我一个NameError - 未定义的局部变量或方法`answer_pair&#39;对于#&lt;#:0x007fa07b9e0098&gt;:app / views / surveys / _table_head.html.erb:1
有人可以告诉我原因吗? 当我也通过&#34; as:&#34;像这样
<%= 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 :(得分:0)
自动生成的变量以模板命名,而不是集合名称。如果您以<td><b><%= table_head.answer2 %></b></td>
的形式访问它,那么它应该按预期工作。