使用Ransack gem,我试图对索引页面上的简单列表进行排序。但是,在排序字段name
中同时存在大写和小写值。为了使它们排序有用,排序应该不区分大小写。Ransack gem - 不区分大小写的排序(Rails 4)
这是模型Vendor
:
name:string, email:string, address:string, phone:string, fax:string
这是控制器:
class VendorsController < ApplicationController
def index
@search = Vendor.search(params[:q])
@vendors = @search.result
end
和视图:
/index.html.slim
tr
th = sort_link @search, :name, "Name"
th = sort_link @search, :email, "Company Email"
th = sort_link @search, :address, "Address"
任何意见将不胜感激。
'sorted_list = vendors.sort {| a,b | a.name.downcase <=> b.name.downcase}'#试试,让我知道它是否有帮助 – hd1
@ hd1感谢您的快速回复!你能否多给我多一点?我试着把它放在控制器的搜索和结果中,但没有运气。仍然是一个新手。 – Luke
尝试向您的模型中添加一个访问器,该访问器将名称返回为小写字母并在该字段上搜索? 'def lowercase_name name.downcase! end'并配置ransack以在您的[controller]中使用@ search.sorts搜索lowercase_name字段(http://techbrownbags.wordpress.com/2014/01/17/rails-ajax-search-sort-paginate-with-ransack -kaminari /) – hd1