Ruby on rails 搜索后未维护Ransack排序,返回默认排序
我正在使用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
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我还没找到解决办法。。如果有,请告诉我