2012-07-03 43 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