質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

3843閲覧

rails 検索フォーム 検索結果表示できない

mori_9

総合スコア5

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

1クリップ

投稿2020/03/28 07:46

前提・実現したいこと

where文を使ってあいまい検索ができる検索フォームの実装をしたい

発生している問題・エラーメッセージ

binding.pryを使用して検索フォームのparamsの中身を確認した結果がこちらです。

28: def search => 29: binding.pry 30: @tasks = Task.search(params[:keyword]) 31: # @q = Task.search(search_params) 32: # @tasks = @q.result(distinct: true) 33: end [1] pry(#<TasksController>)> @tasks = Task.search(params[:keyword]) Task Load (0.3ms) SELECT `tasks`.* FROM `tasks` WHERE (content LIKE('% 買い物%')) ↳ app/controllers/tasks_controller.rb:29 => []

検索フォームに入れた文字は検索されていると思うのですが、検索結果がヒットしていないと思いました。

該当のソースコード

Ruby

1#controller 2 3 def search 4 binding.pry 5 @tasks = Task.search(params[:keyword]) 6 end 7

Ruby

1#model 2 3 4 # 検索機能 5 def self.search(search) 6 if search 7 Task.where('content LIKE(?)', "%#{search}%") 8 else 9 Task.all 10 end 11 end 12 13 belongs_to :user 14 has_many :todos, dependent: :delete_all 15 validates :content, presence: true 16

HTML

1#view 2 3.task__header__box1 4 TODOリスト 5 =form_with(url:search_tasks_path,local: true, method: :get,class:"task__header__box2__search") do |f| 6 =f.text_field :keyword, placeholder: "ToDoを検索する", class: "search-input" 7 =f.submit "検索", class: "task__header__box2__search__text" 8

補足情報(FW/ツールのバージョンなど)

Rails 5.2.4.1
ruby 2.5.1p57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatsu

2020/03/28 07:54

(content LIKE('% 買い物%') をみると買い物と%の間にスペースがありますが、「 買い物」がひっかかるデータがある認識でよろしいですか?
mori_9

2020/03/28 07:59

乗せた質問文が悪かったです。申し訳ございません。 スペースを消した後にもう一度検索を行いましたがヒットしませんでした。
mori_9

2020/03/28 08:07

更新後検索をしたら検索をした結果以下のように検索結果が変わりました。 検索フォームからの検索がヒットしなかった理由は検索ワードの半角スペースでした。 回答ありがとうございます!! 28: def search => 29: binding.pry 30: @tasks = Task.search(params[:keyword]) 31: end [1] pry(#<TasksController>)> @tasks = Task.search(params[:keyword]) Task Load (0.4ms) SELECT `tasks`.* FROM `tasks` WHERE (content LIKE('%買い物%')) ↳ app/controllers/tasks_controller.rb:29 => [#<Task:0x00007fdc05e28220 id: 1, content: "買い物リスト", user_id: "1", created_at: Sun, 22 Mar 2020 07:30:59 UTC +00:00, updated_at: Sun, 22 Mar 2020 07:30:59 UTC +00:00>, #<Task:0x00007fdc05e280e0 id: 3, content: "買い物", user_id: "1", created_at: Sun, 22 Mar 2020 07:31:07 UTC +00:00, updated_at: Sun, 22 Mar 2020 07:31:07 UTC +00:00>, #<Task:0x00007fdc05e2adb8 id: 4, content: "買い物", user_id: "1", created_at: Sun, 22 Mar 2020 07:31:10 UTC +00:00, updated_at: Sun, 22 Mar 2020 07:31:10 UTC +00:00>, #<Task:0x00007fdc05e23b30 id: 5, content: "買い物", user_id: "1", created_at: Sun, 22 Mar 2020 07:31:14 UTC +00:00, updated_at: Sun, 22 Mar 2020 07:31:14 UTC +00:00>, #<Task:0x00007fdc05e23928 id: 6, content: "買い物", user_id: "1", created_at: Sun, 22 Mar 2020 07:31:25 UTC +00:00, updated_at: Sun, 22 Mar 2020 07:31:25 UTC +00:00>] [2] pry(#<TasksController>)> params => <ActionController::Parameters {"utf8"=>"✓", "keyword"=>"買い物", "commit"=>"検索", "controller"=>"tasks", "action"=>"search"} permitted: false> [3] pry(#<TasksController>)>
hatsu

2020/03/28 08:08

お!よかったです!
gouf

2020/03/31 13:28

解決した場合、他者の回答ないし自己回答として内容をまとめて それをベストアンサーに設定することで、この質問を解決済みにすることができます
mori_9

2020/03/31 13:33

解説ありがとうございます! 解決済みにしておきます!
guest

回答1

0

自己解決

検索フォームへの入力の際に1文字目の前に半角スペースが入っていたことにより文字列探索がヒットしなかったようです。

アドバイスをくれた皆さんありがとうございました!

投稿2020/03/31 13:35

mori_9

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問