RoR:将集合传递给partial将无效

时间:2014-12-05 23:16:20

标签: ruby-on-rails-3 collections partial

我正在扩展一些开源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 %>

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

自动生成的变量以模板命名,而不是集合名称。如果您以<td><b><%= table_head.answer2 %></b></td>的形式访问它,那么它应该按预期工作。