ruby-on-rails - Rails 部分集合为空?

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

我已经尝试弄清楚这个问题大约一个小时了。我有一个确实填充了成员模型对象的部分集合,当我尝试使用集合呈现它时:

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

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

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

View 正确呈现,我得到 3 个成员项目,但 ID 和电子邮件为空。

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

现在我已经看到了一堆不同的例子,但收集方法是我需要走的路。我需要部分只处理每个成员,因为父 View 支持以不同方式对成员进行分组。如果我在部分中为每个成员实现一个循环,我将不得不将分组 View 代码也移到其中,它与父 View 中的输入字段交互。例如维护起来会很麻烦。

提前致谢。

最佳答案

当你这样做时:

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

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

关于ruby-on-rails - Rails 部分集合为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706333/

相关文章:

mongodb - 120 个 mongodb 集合与单个集合 - 哪个更有效?

java - 说 "Comparable affects the original class but Comparator doesnt"是什么意思

java - 什么java集合为同一个键提供多个值

javascript - 选择 "Other"时下拉添加输入

ruby-on-rails - 在 Heroku 上更新到 Rails 3.1 时的 Assets 管道

ruby-on-rails - 需要 user_id 时对 Rspec 功能的怀疑

ruby-on-rails - Rails - 这是不好的做法还是可以优化?

ruby-on-rails - 当我在 ruby​​ on rails 中生成迁移时,它会创建一个包含空方法的文件,为什么?

ruby-on-rails - 如何重构 Rails 'params' 方法

javascript - capybara 无法找到链接 "Delete Comment"