2011-07-25 19 views
0

私はRailsが新しく、検索結果をドロップダウンメニューでフィルタリングしようとしています。ドロップダウンは自転車モデルの属性であるbiketype(つまり 'Road'、 'Mountain')です。私は価格で並べ替えるのも好きです。検索結果をドロップダウンリストでフィルタリング

マイindexビュー:

<% form_tag(bikes_path, :method => :get) do %> 
<%= select_tag(:biketype, options_for_select(Bike::BIKETYPES))%> 
<%= submit_tag "Submit" %> 
<% end %> 

と場所ベースの検索(使用ジオコーダ)のための私のbikes_controller:

def index 
    @title = "Bikes" 
     if params[:search].present? 
     @bikes = Bike.near(params[:search], 50, :order => :distance).paginate(:page => params[:page], :per_page => 9) 
     else 
     @bikes = Bike.paginate(:page => params[:page], :per_page => 9) 
     end 
    end 

あなたは私のコントローラとモデルへの更新方法として任意の提案を持っていた場合フィルタとソートを得ることは素晴らしいでしょう。私はスコープを推奨していますが、実装方法は不明です。ありがとう、ウィル。

+0

「Bike :: BIKETYPES」が定義されていた場所と方法を覚えていますか?また、検索結果を絞り込むためにドロップダウンを追加しようとしています。 – Dennis

答えて

1
class BikesController < ApplicationsController 

    def index 
    @title = "Bikes" 
    @bikes = Bike.near_search(params[:search]).\ 
       paginate(:page => params[:page], :per_page => 9) 

    end 
end 


class Bike 

    def self.near_search(params) 
    if params 
     near(params, 50, :order => :distance) 
    else 
     all 
    end 
    end 

end 
+0

良いリファクタリング。しかし、あなたは、上記のドロップダウンフォームを以下のように実装する方法を知っていますか?バイクインデックスのbiketype属性フィルタ?ありがとう! –

+0

私はあなたのレストコードを見ることができませんが、** scope^*の作成で定数で反復処理を行うことができます。 class_eval do; BIKETYPES.each do | b |;スコープb.to_sym、(:type、b);終わり。 – Anatoly

+0

** order( 'price DESC')**を使用して価格でコレクションをソートすることができます – Anatoly

関連する問題