簡體   English   中英

排序時不刪除URL中的參數[RAILS 3]

[英]Not delete params in URL, when sorting [ RAILS 3 ]

我有可排序的表列,其格式如下: 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>

Kamil的答案對於單個控制器來說效果很好。 第228集將可排序方法放在application_helper中,因此,如果要在其他控制器中使用它,則必須添加所有參數。 你可以用params.merge解決

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

呵呵,平凡的解決方案

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}  

結束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM