前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー