1

開発環境のローカルホストで実行すると大文字と小文字を区別しない検索を実行する検索バーがありますが、Herokuにプッシュして本番環境で実行すると、検索で大文字と小文字が区別されます。この動作の原因がわからない。

app \ views \ layouts \ application.html.erbから:

<form class="navbar-search pull-right">
    <input type="text" class="search-query span3" placeholder="Find Some Beers" name="search">
</form>

app \ controllers \ ratings_controller.rbから:

def search
    fff = Rating.search(params[:search])
    @ratings_by_name = fff.paginate(:order => 'name ASC', :page => params[:page], :per_page =>10)
    @ratings_by_score = fff.paginate(:order => 'score DESC', :page => params[:page], :per_page =>10)
end

app \ models \ rating.rbから:

def self.search(query)
    words = query.to_s.strip.split
    words.inject(scoped) do |combined_scope, word|
    combined_scope.where("name LIKE ?", "%#{word}%")
    end
end

ありがとうございました!

4

1 に答える 1

0

Heroku は postgres を使用しています。開発でも postgres を使用していることを確認してください。

LIKE の ILIKE postgres 大文字と小文字を区別しないバージョンを使用する

combined_scope.where("name ILIKE ?", "%#{word}%")

http://www.postgresql.org/docs/9.1/static/functions-matching.html

LIKE の代わりにキーワード ILIKE を使用して、アクティブなロケールに従って大文字と小文字を区別しないようにすることができます。これは SQL 標準にはありませんが、PostgreSQL の拡張機能です。

于 2013-01-26T22:50:38.997 に答える