2011-01-17 4 views
0

ソート可能なテーブルカラムがあります。http://asciicasts.com/episodes/228-sortable-table-columns select_tag(GETメソッド)で作成された2つのカラムのフィルタオプションがあります。ソート時にURLのparamsを削除しないでください。[RAILS 3]

この2つの機能は一緒に機能しません。フィルタを変更すると、ソートパラメータは消えて逆になります。

<th><%= sortable "Id" %></th> 
<th> 
    Status<br/> 
    <form method="get"> 
    <%= select_tag(:status, options_for_select([['All', 'all']][email protected], params[:status]),{:onchange => 'this.form.submit()'}) %> 
</th> 
<th><%= sortable "Operation" %></th> 
<th> 
    Processor<br/> 
    <%= select_tag(:processor, options_for_select([['All', 'all']][email protected]_names, params[:processor]),{:onchange => 'this.form.submit()'}) %> 
    </form> 
</th> 

答えて

0

笑、自明な解

def sortable(column, title = nil) 
    title ||= column.titleize 
    css_class = (column == sort_column) ? "current #{sort_direction}" : nil 
    direction = (column == sort_column && sort_direction == "asc") ? "desc" : "asc" 
    link_to title, {:status => params[:status], :processor => params[:processor], :sort => column, :direction => direction}, {:class => css_class} 

エンド

0

カミルからの回答は、単一のコントローラのため正常に動作します。 Episode 228は、ソート可能なメソッドをapplication_helperに入れます。他のコントローラで使用する場合は、すべてのパラメータを追加する必要があります。 params.mergeで解決できます

link_to title, params.merge(:sort => column, :direction => direction), {:class => css_class}