0

我对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

现在这完美无缺,但它显示 A B C a b c

它应该是 A a B b C c

4

3 回答 3

2

对订单的调用只是创建对您的数据库的“ORDER BY”调用。查看您的日志以验证这一点。如果您想要不同的顺序,则需要调整数据库对结果排序的方式!

于 2012-07-03T17:42:23.577 回答
1

如果你使用

where('name ILIKE ?', "%#{search}%")

而是在

于 2012-07-23T14:02:11.013 回答
0

我喜欢做的方式就像

result = Users.find(:all, :order => "LOWER(#{params[:sort]} #{params[:direction]})")
于 2015-08-03T11:26:01.627 回答