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

選択が必要なものかどうかはわかりません。私はどこで試していましたが、それもうまくいきませんでした。念のため@purchases= @ microposts.select(kind: "sale")も試しましたが、それもうまくいきませんでした。

明確でない場合、種類は「販売」または「購入」のいずれかを示すマイクロポストテーブルの列です。@purchasesを「購入」の種類のマイクロポストの配列にしたい

4

2 に答える 2

1

こんにちは、選択を間違った方法で使用しています。このように試してみる前に、選択を使用する必要があります

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

これにより、db に対して別のクエリが実行されます。これを望まず、@microposts リスト オブジェクトを使用してみる場合は、これを行うことができます

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

kind は micropost オブジェクトの属性だと思います。

ありがとう

于 2012-09-20T03:56:37.080 に答える
0

.where配列ではなく基準を返します。これはおそらくあなたを混乱させたものです。これを試して。

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