2012-07-03 36 views
0

我遇到了一个问题,那就是rails出现这种问题,看起来大写字母组合在一起,然后小写字母组合在一起。我同意数据库中的数据应该是相同的,但不能帮助用户输入。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 

现在这个完美的作品,但它显示 一个 乙 Ç 一个 b Ç

而且它应该是 一 一个 乙 b Ç Ç

回答

0

我喜欢这样做的方式就像

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

调用只是为了创建一个 “ORDER BY” 打电话给你的数据库。看看你的日志来验证这一点。如果你想要一个不同的顺序,比你需要调整你的数据库命令结果的方式!

1

如果使用

在哪里( '名ILIKE?', “%#{搜索}%”)

而不是在

LIKE