2017-03-06 11 views
0

カテゴリとサブカテゴリに基づいてフィルタリングしようとしています。今、私はそれをアヤックスなしでやっています。私は最初のフィルタカテゴリに基づいてする場合は、次のURLは正しいパラメータを取っていますが、レールに正しい結果を表示しません。

は私のコントローラメソッド

def filter 
    x = params[:category_id] 
    y = params[:sub_category_id] 
    #@wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}", sub_category_id: "#{y}") 

    if x 
     @wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}") 
    elsif x && y 
     @wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}", sub_category_id: "#{y}") 
    end 
end 

で、URLは次のようになります。

http://localhost:3000/wanted_equipments/filter?utf8=%E2%9C%93&category_id=1 

そして、そのカテゴリの下に機器を表示します。 次はサブカテゴリを選択してフィルタを入力するときです。 URLは次のようになります。

http://localhost:3000/wanted_equipments/filter?utf8=%E2%9C%93&category_id=1&sub_category_id=3 

これは、sub_category_idに基づいてさらにフィルタリングされています。しかし、以前と同じデータを表示しています。つまり、urlにはsub_category_idが指定されていてもcategory_idのみをパラメータとして使用しています。

私は何か間違っていることを知っています。私は違う条件を試しましたが、これを解決することはできません。誰かがサブカテゴリを考慮するためにコントローラーをどのように変更する必要がありますか教えてください。

+0

ここで承認されるものは何ですか?私はそのスコープとその名前を承認する必要があると思う。 –

+0

ああ、管理者側からの機能です。それは承認された機器だけを表示します。 – user3576036

+0

小文字で関数名を使用する必要があります。これ以外にも、以下の回答は良いです。 –

答えて

2

if条件に問題があります。それはeslifブロックに移動しないで、あなたのif x条件真ので

if x && y 
    @wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}", sub_category_id: "#{y}") 
elsif x 
    @wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}") 
end 

:への変更を試してみてください。これが叶うことを願う

+0

これは動作しています。しかし、sub_category_idを選択しないと、category_idだけをフェッチすることはできますか?たとえば、このURL: 'http:// localhost:3000/wanted_equipments/filter?utf8 =%E2%9C%93&category_id = 1&sub_category_id ='はそのcategory_idの下にデータを表示する必要があります。 – user3576036

+1

現在の状態を確認しますか?また 'if x.present? && y.present? 'とelsif' elsif x.present? 'で動作します。 –

1

シーケンス

の問題は、あなたのコードの状態であり最初xをチェックするには、xが存在する場合、それは

に従うようにコード・シーケンスを変更する、だから、第二の条件に

をチェックするつもりはありませんpresent?かではありません

if x && y 
    @wanted_equipments = WantedEquipment.Approved.where(category_id: "# {x}", sub_category_id: "#{y}") 
elsif x 
    @wanted_equipments = WantedEquipment.Approved.where(category_id: "#{x}") 
end 
0
 @wanted_equipments = if y 
          WantedEquipment.Approved.where(category_id: "#{x}", sub_category_id: "#{y}") 
          else 
          WantedEquipment.Approved.where(category_id: "#{x}") 
          end if x 
関連する問題