我有一个问题,即rails正在进行的排序看起来大写是组在一起然后小写是组合在一起。我同意数据库中的数据应该是相同的,但是你无法帮助用户输入。
我的搜索控制器
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
现在这完美无缺,但它显示出来 一个 乙 C 一个 b ç
它应该是 一个 一个 乙 b C ç
答案 0 :(得分:2)
对订单的调用只会对您的数据库创建一个“ORDER BY”调用。查看您的日志以验证这一点。如果你想要一个不同的订单,那么你需要调整数据库命令结果的方式!
答案 1 :(得分:1)
如果您使用
where('name ILIKE?',“%#{search}%”)
而不是
LIKE
答案 2 :(得分:0)
我喜欢这样做的方式就像
result = Users.find(:all, :order => "LOWER(#{params[:sort]} #{params[:direction]})")