Ransack gem-不区分大小写的排序(Rails 4)

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)

任何建议将不胜感激。

mut*_*kid 6

您正在寻找的是自定义“ 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)

  • 您介意解释它的作用或原理吗?我对使用'arel_table'感到特别困惑。 (2认同)