2014-04-23 63 views
1

在我的藝術家索引中,我有此代碼允許用戶搜索藝術家,然後該頁面將只顯示結果而不是所有藝術家。欄目視圖按各種分類排序模型

<%= form_tag(artists_path, :method => "get", id: "search-form") do %> 
     <%= text_field_tag :search, params[:search], placeholder: "Search Artists" %> 
     <%= submit_tag "Search", :name => nil %> 
<% end %> 

這工作,因爲在我的控制,我有:

def index 
    if params[:search] 
     @artists = Artist.search(params[:search].titleize).order("created_at DESC") 
    else 
     @artists = Artist.all.order(:name) 
    end 
end 

但現在我想添加按鈕,在我看來,其他類別,如平均分最高,大多數評論等進行排序什麼是最好的方式來做到這一點類似於我的形式,所以當他們點擊鏈接時,它會拋出一個參數到控制器中的索引並重新加載頁面?

+1

可能是您要過濾的選項搜索結果可以作爲選擇選項給出,同時在ch之後點擊搜索選擇過濾器選項,它也可以發送到控制器的索引方法並根據它顯示結果。 –

+0

我會實現一個基本的搜索,只搜索藝術家的名字和高級搜索有更多的選擇。在高級搜索中,您可以使用下拉菜單,滑塊或任何其他功能來搜索任何內容,尤其是輕而易舉。所有參數將發送給您的控制器。但是,我不會在索引操作中實現高級搜索功能。我更喜歡使用模塊,關注或簡單的老紅寶石對象,以保持你的控制器瘦。 –

回答

0

首先,讓我們重構這個代碼一點點,並添加修改:

​​ 在你看來

,如果顯示的列名,然後每一個顯示器旁邊的箭頭進行排序,並點擊它就會切換排序來如果在視圖中沒有列名稱,則添加一個帶列名稱的選擇下拉列表,並在更改時提交表格:

<%= form_tag(artists_path, :method => "get", id: "search-form") do %> 
    <%= text_field_tag :search, nil, placeholder: "Search Artists" %> 
    <%= select_tag :order, options_for_select([ ['Created At', :created_at], ['Name', :name ], :name) %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %>