実装環境
Rails 5.1.7
Ruby 2.4.0
Slimで実装
#やりたいこと
実装済のuserを検索したい
検索条件はあとから追加できるようにしたい
今回は名前検索を行う
参考記事
https://freesworder.net/rails-search/
https://www.sejuku.net/blog/71189
※ 個人的にわからないところがいっぱいだったので調べながら
models/user.rb
class User < ActiveRecord::Base
def self.search(search)
if search
User.where(['name LIKE ?', "%#{search}%"])
else
User.all
end
end
end
検索フォーム
= form_tag users_path, method => 'get' do
p
= text_field_tag :search, params[:search]
= submit_tag "Search", :name => nil
controllers/users_controller.rb
class UsersController < ApplicationController
def index
@users = User.search(params[:search]
end
end
補足: LIKEによるあいまい検索
SQLにはLIKE句を使ったあいまい検索の構文がある
~ WHERE 列名 LIKE '%検索値%'
~ WHERE 列名 LIKE '検索値_'
% → 0文字以上の任意の文字列
_ → 任意の1文字
ModelClass.where("列名 LIKE ?", "%値%") # 値(文字列)を含む
ModelClass.where("列名 LIKE ?", "値_" # 値(文字列)と末尾の一文字