2016-08-24 2 views
1

Сценарий: есть кнопка сортировки, когда пользователь нажимает на нее, список сортируется по name (это сортировка по created_at раньше).Элемент сортировки Rails нажатием кнопки

У меня проблема в том, что я действительно сортировал код в рубине, но как узнать, когда пользователь нажимает кнопку?

Например:

<button id = "sort_btn">Sort by name!</button> 
... 

<%# before_sort is origin array %> 
<% sort_arr = Array.new(before_sort) %> 
<%# x[1] is the name attribute %> 
<% sort_arr.sort_by!{|x| x[1]} %> 
<%# if click sort button %> 
<% sort_arr.each do |section_layer1| %> 
<%# if did't click sort button or click twice sort button %> 
<% before_sort.each do |section_layer1|> 
    <%= render :partial => 'list', :locals => {:section => section_layer1 }%> 
<% end %> 

Я думал, что я мог бы использовать Javascript, чтобы удалить дисплей происхождения и сделать частичный вид еще раз после того, как пользователь нажмет кнопку сортировки.

ответ

1

Javascript! Вы можете добавить параметр GET вручную по щелчку:

$(".sort_btn").on('click',function(){ 
    if (url.indexOf('?') > -1){ 
    url += "&sort=sort"; 
    }else{ 
    url += "?sort=sort"; 
    } 
    } 

    window.location.href = url; 

    }); 

И тогда, если параметр существует, выведите отсортированный таблицу:

<%- if params[:sort].present? %> 
    -- print sorted table -- 
<%- else %> 
    -- not sorted -- 
<% end %> 
+1

Наконец, я выбираю использовать 'link_to + дистанционное true', а затем render 'response_to js.erb'. –