Ruby错误:参数数量错误(0表示1)?

时间:2012-09-20 03:52:28

标签: ruby ruby-on-rails-3

我有一系列名为@microposts的微博

所以它的

@microposts=Micropost.all
@purchases=@microposts.select(:kind => "purchase")

然后它给了我错误

ArgumentError: wrong number of arguments(1 for 0)
    from (irb):23:in `select'
    from (irb):23

我不确定select是否是我需要的。我在哪里尝试,但那也没有用。我也试过@ purcha = @ microposts.select(kind:“sale”)以防万一,但这也没用。

如果不清楚,kindots是微博表中的一列,表示“销售”或“购买”。我希望@purchases成为“购买”类型的微博数组

2 个答案:

答案 0 :(得分:1)

您好以错误的方式使用选择。你应该先使用select 试试这个

@purchases = Micropost.where(:kind => "purchase")

这将对db进行另一次查询。如果您不想这样并尝试使用@microposts列表对象,则可以执行此操作

@microposts=Micropost.all
@purchases=@microposts.collect{ |m| m if m.kind == "purchase"}.compact

我认为种类是微博客对象的属性。

由于

答案 1 :(得分:0)

.where返回一个条件,而不是一个数组。这可能是你的困惑。试试这个。

arr = Micropost.where(:kind => 'purchase').to_a