Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 搜索后未维护Ransack排序,返回默认排序_Ruby On Rails_Sorting_Ransack - Fatal编程技术网

Ruby on rails 搜索后未维护Ransack排序,返回默认排序

Ruby on rails 搜索后未维护Ransack排序,返回默认排序,ruby-on-rails,sorting,ransack,Ruby On Rails,Sorting,Ransack,我正在使用Ransack搜索一些数据,但是,我发现在搜索之后排序没有得到维护。它将恢复为控制器中指定的默认排序 场景是:我按一列排序,比如说收入,然后执行搜索,收入的排序被删除,并返回到我在控制器中设置的默认排序 这是我的控制器代码: def index @q = Product.ransack(params[:q]) @q.sorts = 'start_date desc' if @q.sorts.empty? @products = @q.result.page(pa

我正在使用Ransack搜索一些数据,但是,我发现在搜索之后排序没有得到维护。它将恢复为控制器中指定的默认排序

场景是:我按一列排序,比如说收入,然后执行搜索,收入的排序被删除,并返回到我在控制器中设置的默认排序

这是我的控制器代码:

def index
    @q = Product.ransack(params[:q])
    @q.sorts = 'start_date desc' if @q.sorts.empty?
    @products = @q.result.page(params[:page]).per(30)
end
我对sorts.empty代码的理解?如果我已经对某些内容进行了排序,则不会应用此默认排序。不是这样吗


谢谢

我找到的最佳解决方案是使用隐藏字段将:s字段手动添加到搜索表单中:

<%= search_form_for(@q, url: search_url) do |f| %>
  <%= f.hidden_field :s, value: params[:q].try(:[], :s) %>
  <%= f.text_field :foo_eq %>
<% end %>

通过这样做:s字段在呈现搜索表单时总是使用正确的参数进行更新。如果不手动设置该值,则它不起作用,因为@q.s是@q.sorts的别名,它返回的是对象而不是排序字符串。

您好,您找到了解决问题的方法吗?我也有同样的问题嘿@EdgarsRozenfelds我还没找到解决办法。。如果有,请告诉我