2012-09-21 159 views
0

當用這些參數運行下面的代碼時,我總是收到一個錯誤undefined method whereRails in In不知道在哪裏

任何人都可以看到我做錯了什麼?

感謝

Parameters: {"category_ids"=>["1", "3", "4"]} 

    @pieces = Piece.all 
    @pieces = @pieces.where(:category_id => params[:category_ids]) if params[:category_ids].present? 
    @pieces = @pieces.where(:brand_id => params[:brand_ids]) if params[:brand_ids].present? 
    @pieces = @pieces.where(:color_id => params[:color_ids]) if params[:color_ids].present? 
    @pieces = @pieces.where(:user_id => params[:friend_ids]) if params[:friend_ids].present? 

回答

0

它應該是:

Piece.where(:category_id => params[:category_ids]) if params[:category_ids].present?

+0

即使它是通過過濾所有這些過濾器?也許我應該使用:條件? - 謝謝順便說一下:) – Dol

+0

或者你的意思僅僅是第一@ piece.where應該是Piece.where? – Dol

+0

Piece.all不返回給你一個ActiveRelation。這意味着,你不能在其上運行「where」。相反,所有Piece.all都會返回一個Piece對象數組。 –

1

User.all回報你的user objectsArray所以在使用上where給出了一個錯誤NoMethodError:未定義的方法`其中」 Array

所以使用下面的inst EAD

@pieces = Piece.where(:category_id => params[:category_ids]) 
+0

感謝您的解釋 – Dol