Rails部分收集空?

时间:2012-01-02 23:21:01

标签: ruby-on-rails collections ruby-on-rails-3.1 render

我一直在努力想出这个问题大约一个小时了。我有一个部分集合确实填充了成员模型对象,当我尝试使用集合渲染它时:

<%= render :partial => 'list', :collection => @members %>

在我的_list.html.erb中,@member_id和@member_email属性在呈现的html中为空:

<%= check_box_tag('selected_member[]', @member_id, false) %>
<%= @member_email %>

视图呈现正确,我获得了3个成员项,但ID和电子邮件空白。

我做错了什么?如果我尝试使用“member_id”或“member.id”访问部分成员,我会得到“未定义的局部变量或方法`成员'”,所以很明显这不是正确的表示法。

现在我已经看到了很多不同的例子,但收集方法是我需要的方式。我需要部分只处理每个成员,因为父视图支持以不同方式对成员进行分组。如果我在每个成员的partial中实现一个循环,我还必须将分组视图代码移动到它中,它与父视图中的输入字段交互。例如维持这将是一团糟。

提前致谢。

1 个答案:

答案 0 :(得分:4)

当你这样做时:

<%= render :partial => 'list', :collection => @members %>

Rails期望部分文件中的局部变量的名称与部分文件本身相同,在本例中为list

因此,默认情况下,member代替list,而不是<%= check_box_tag('selected_member[]', list.id, false) %> <%= list.email %>

member

如果您希望将局部变量命名为<%= render :partial => 'list', :collection => @members, :as => :member %> ,则应重命名部分文件或使用以下语法:

{{1}}

此处有更多信息(第3.4.5节):http://guides.rubyonrails.org/layouts_and_rendering.html