前提・実現したいこと
Railsの勉強で簡単なブログアプリを制作しています。
検索ボックス機能を搭載したいのですがうまくできないので質問させてください。
検索したら記事のタイトルとコンテンツの文字に一部一致する記事を表示する機能を搭載したいと考えています。
ひらがなや漢字で検索するとうまく表示してくれるのですが、数字で検索すると表示してくれません。
どのように修正すれば数字で検索しても表示するように出来るのでしょうか?
タイトルもコンテンツもString型ですので検索ボックスで受け取った情報をString型に変換するように記述すれば良いのでしょうか?
該当のソースコード
views/application.html.erb
<%= form_tag(posts_path, method: "get") do %> <%= text_field_tag :search, params[:search]%> <%= submit_tag 'Search'%> <% end %>
models/post.rb
class Post < ApplicationRecord scope :search, ->(word) { where("content like ? or title like ?", "%#{sanitize_sql_like(word)}%", "%#{sanitize_sql_like(word)}%") } end
controllers/posts_controller.rb
class PostsController < ApplicationController before_action :set_post, only: [:show, :edit, :update, :destroy] def index if params[:search].present? @posts = @posts.search params[:search] end end end
補足情報(FW/ツールのバージョンなど)
Rails 5.2.0
ruby 2.3.3p222
あなたの回答
tips
プレビュー