レールが行っている並べ替えに問題があります。大文字がグループ化され、次に小文字がグループ化されているようです。そして、データベース内のデータは同じである必要がありますが、ユーザー入力を助けることができないことに同意します。
私の検索コントローラー
def accounts
@accounts ||= Account.search(params[:search]).order(sort_column + " " + sort_direction).paginate(:per_page => 100, :page => params[:page])
end
helper_method :accounts
def account
@account ||= params[:id] ? Account.find(params[:id]) : Account.new(params[:account])
end
helper_method :account
def sort_column
Account.column_names.include?(params[:sort]) ? params[:sort] : "name"
end
def sort_direction
%w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
end
私のモデルでは私が持っています
def self.search(search)
if search
where('name LIKE ?', "%#{search}%")
else
scoped
end
end
これで完全に動作しますが、A B C a b c と表示されます
そして、それはA a B b C cでなければなりません