在Rails 3.2应用程序中获取未定义的方法“拒绝”错误

时间:2013-06-06 19:38:45

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

在rails应用视图中,以下工作正常:

<%= bc.items.uniq.collect{|g| g.display_name}.join(", ") %>

但是,我正在尝试仅收集包含数字达到并包含23的ID的项目。我似乎无法正确使用语法。以下内容会产生错误。

<%= bc.items.uniq.collect{|g| g.display_name(false)}.join(", ").reject{g.id > 23} %>

错误消息:

undefined method `reject'

我可以使用'拒绝'吗?

1 个答案:

答案 0 :(得分:3)

  1. 您需要将.reject放在.collect.join之前,因为您需要处理对象数组,.collect将返回一个字符串数组我可以推断,.join会使它成为一个字符串。
  2. 您需要将g作为块的参数。
  3. 这应该有用;

    <%= bc.items.uniq.reject{|g| g.id > 23}.collect{|g| g.display_name(false)}.join(", ") %>