Luk*_*uke 3 sorting ransack ruby-on-rails-4
我试图使用Ransack gem在索引页上对一个简单列表进行排序。但是,sort字段中同时存在大写和小写值name
。为了使它们排序有用,排序应该不区分大小写。
这是模型Vendor
:
name:string, email:string, address:string, phone:string, fax:string
Run Code Online (Sandbox Code Playgroud)
这是控制器:
class VendorsController < ApplicationController
def index
@search = Vendor.search(params[:q])
@vendors = @search.result
end
Run Code Online (Sandbox Code Playgroud)
和视图:
/index.html.slim
tr
th = sort_link @search, :name, "Name"
th = sort_link @search, :email, "Company Email"
th = sort_link @search, :address, "Address"
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激。
您正在寻找的是自定义“ Ransacker”:
class Vendor < ActiveRecord::Base
ransacker :name_case_insensitive, type: :string do
arel_table[:name].lower
end
end
Run Code Online (Sandbox Code Playgroud)
视图:
th = sort_link(@q, :name_case_insensitive)
Run Code Online (Sandbox Code Playgroud)