2011-07-25 65 views
0

我是Rails的新手,嘗試通過下拉菜單過濾搜索結果。下拉是雙輪廓型(即「道路」,「山」),這是自行車模型的一個屬性。我也想按價格分類。拖放搜索結果篩選器導軌

我的索引視圖:

<% 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