私は現在、単語を入力できる基本検索をしており、その検索のようなすべてのレコードを返します。続くように、それは次のとおりです。私は今、けれども行いたい何複数のキーワード検索
application.html.erb
<%= form_tag games_path, :method => 'get' do %>
<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag t('.searchb'), :game_name => nil %>
<% end %>
コントローラとモデル
@games = Game.search(params[:search])
def self.search(search)
search = search.to_s.strip.split
search.inject(scoped) do |combined_scope, search|
combined_scope.where(['game_name LIKE ? OR genre LIKE ? OR console LIKE ?', "%#{search}%", "%#{search}%", "%#{search}%"])
end
end
は、検索バーにして複数の単語を入力する機能ですそれを持っているレコードではなく、関連するすべてのレコードをその言葉に戻すようにしてください。
私が戦闘をタイプすると、アクションは
すべての戦闘ゲームとすべてのアクションゲームを返すようにしたい。
これを実装するにはどうすればよいですか? モデル:あなたは、キーワードを取るループして、これを達成するためのクエリを作成する必要が
EDIT
私は、宝石を使用しないオプションを望んでいました:/私はレールをもっとよく理解できるので、コードを書く方が良いでしょうか?私はモデルのセクション(コントローラーの行の下に添付)で上記を更新しました。私はそれが罰金ですが、1つの単語を入力した場合、2つを入力すると、どちらかを持つすべてのレコードではなく、2つの単語を持つレコードを検索しようとします。 – user1222136
あなたはMySQL関数http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.htmlを使って独自のフルテキスト検索を実装することができますが、それはルビーの方法ではありません。あなたが宝石が何をしているか知っていれば、宝石を使用することは悪くない。スフィンクスは補充検索用のデーモンであり、思考用のスフィンクスはこのデーモンを使用するインターフェイスです。あなたは両方のことについて多くのことを読むことができます。私はyur自身の検索メカニズムを書いていても意味がありません! – davidb