2012-09-20 73 views
1

我有微觀柱陣列名爲@micropostsRuby錯誤:參數數量錯誤(0代表1)?

所以其

@microposts=Micropost.all 
@[email protected](:kind => "purchase") 

,然後它給我的錯誤

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

我不知道如果選擇是什麼,我需要。我試圖在哪裏,但也沒有工作。我也嘗試@購買= @ microposts.select(種類:「銷售」),以防萬一,但也沒有工作。

如果不清楚,kind是微博表中的一列,表示「出售」或「購買」。我想@purchases是微陣列的「購買」種類

回答

1

嗨,你正在使用選擇錯誤的方式。之前的所有 嘗試這樣

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

這會做另一個查詢到數據庫應該使用select。如果你不希望這一點,並嘗試使用@microposts列表對象,則可以做到這一點

@microposts=Micropost.all 
@[email protected]{ |m| m if m.kind == "purchase"}.compact 

在那裏,我想是一種微柱對象的屬性。

由於

+1

我不認爲你正確地使用它(對於他的問題,無論如何):) –

+0

對不起,我把它錯誤的方式。 –

+0

我認爲這是工作,但我不能得到@purchases輸出,以便我可以檢查。你能告訴我如何? – BigBoy1337

0

.where返回一個標準,而不是陣列。這可能會讓你感到困惑。嘗試這個。

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

微博已經可以工作了被製造?或者每次創建微博時都會更新數組?我可以命名一個數組@purchases?如果是的話,那就是.to_ @購買。我將分配給什麼? – BigBoy1337

+0

@ BigBoy1337:每次運行此查詢時,它都會從數據庫中提取最近的數據。 '#to_a'是一個特殊的方法,它將enumerable('.where'返回)轉換爲數組。你可以隨意命名你的變量。 –

相關問題