Не удалять параметры в URL при сортировке [RAILS 3] - PullRequest
0 голосов
/ 17 января 2011

У меня есть сортируемые столбцы таблицы, сделанные так http://asciicasts.com/episodes/228-sortable-table-columns И у меня есть просто параметры фильтра для двух столбцов в таблице, сделанные в select_tag (метод GET).

Эти две функции не работают вместе. Когда я меняю фильтр, параметр сортировки исчезает и обратно.

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

Ответы [ 2 ]

0 голосов
/ 01 февраля 2015

Ответ от Камила отлично работает для одного контроллера. Episode 228 помещает сортируемый метод в application_helper, поэтому, если вы хотите использовать его в других контроллерах, вы должны добавить все параметры. Вы можете решить с params.merge

link_to title, params.merge(:sort => column, :direction => direction), {:class => css_class}
0 голосов
/ 17 января 2011

хе-хе, тривиальное решение

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}  

конец

...