1

我有一组名为@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 是否是我需要的。我正在尝试在哪里,但这也不起作用。我还尝试了 @purchases=@microposts.select(kind:"sale") 以防万一,但这也没有用。

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

4

2 回答 2

1

嗨,您以错误的方式使用选择。你应该在所有尝试之前使用 select 像这样

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

这将对数据库进行另一个查询。如果你不想要这个并尝试使用@microposts 列表对象,你可以这样做

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

我想 kind 是 micropost 对象的属性。

谢谢

于 2012-09-20T03:56:37.080 回答
0

.where returns a criteria, not an array. This is what probably confused you. Try this.

arr = Micropost.where(:kind => 'purchase').to_a
于 2012-09-20T03:57:23.800 回答