导轨分类大小写

时间:2012-07-03 17:17:49

标签: ruby-on-rails-3 search sorting

我有一个问题,即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 ç

3 个答案:

答案 0 :(得分:2)

对订单的调用只会对您的数据库创建一个“ORDER BY”调用。查看您的日志以验证这一点。如果你想要一个不同的订单,那么你需要调整数据库命令结果的方式!

答案 1 :(得分:1)

如果您使用

  

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

而不是

  

LIKE

答案 2 :(得分:0)

我喜欢这样做的方式就像

result = Users.find(:all, :order => "LOWER(#{params[:sort]} #{params[:direction]})")