フリーワード検索を実装したのですが、現在1語で検索した場合はしっかりと検索結果をとってきてくれるのですが、2語以上をスペース空けて検索した場合は結果を取得できません。
検索部分のコードは下記の通りです。
ruby
1 def index 2 @word = params[:q] 3 @topics = Topic.where('text like ?', "%#{params[:q]}%").order("id DESC").page(params[:page]).per(25) 4 prepare_meta_tags(title: "#{@word}の検索結果") 5 end
また、なぜか結果のクエリが下記のように「button=」がはいってしまいます。
ruby
1https://cremu.jp/search?q=◯◯%&button= 2
view
ruby
1 <%= form_tag search_index_path, :method => 'get', class: "header_form_wrap", enforce_utf8: false do %> 2 <%= text_field_tag :q, params[:q], :placeholder => "気になるワードを入力" ,class: "header_form" %> 3 <%= button_tag :type => "submit", :class =>"header_form_submit" do %> 4 <%= fa_icon("search") %> 5 <% end %> 6 <% end %>
お手数ですが、ご教示お願い致します。
View の記述に誤りはありませんか? 当該部分は公開可能ですか
ありがとうございます。viewのほう追加しました。どうかよろしくお願い致します。
仮に書いたとしてもおかしなコードになると思うので( https://gist.github.com/anonymous/d534c7936a64759e9936e95100b54d41 ) Ransack を導入されるのがよいかもしれません : [activerecord-hackery/ransack: Object-based searching.]( https://github.com/activerecord-hackery/ransack )
params の中身はどうなっていますか?
スペース区切りの場合,どういう結果を期待しますか。`foo bar` で検索したとき,`foo bar` を含むものを検索したいのか,`foo` と `bar` をいずれも含むものを検索したいのか。
> goufさん paramsの中身には入力した検索ワードがそのまま入ります!
> scivolaさん foo barのどちらも含むものを検索したいです!