1.ルーティングの指定
ルーティングの中に検索したいテーブルの中にserchを記述します。以下を例とします。collectionを使うことによって生成されるルーティングのURLと実行されるコントローラーを任意でカスタムできます。
config/routes.rb
resources :posts do
collection do
get 'search'
end
end
2.モデルの指定
モデルを指定します。以下のようにwhereメソッドとLIKE句を使い、検索をかけたいカラムを記述します。
post.rb
def self.search(search)
if search != ""
Post.where('text LIKE(?)', "%#{search}%" )
else
Post.all
end
end
3.この他に検索のカラムを追加したいとき
もしいくつかのカラムを検索につかしたいときは、orを使い"%#{search}%"以下のように記述しましょう。
post.rb
def self.search(search)
if search != ""
Post.where('text LIKE(?) or title LIKE(?)', "%#{search}%", "%#{search}%")
else
Post.all
end
end
#4 コントローラーにserchアクションを記述
コントローラーにsearchアクション記述をします。この記述でバックエンドの記述は終了です。あとはビューに反映させるだけなので、お好みの形でデザインしましょう。
controllers/posts_controller.rb
def search
@post = Post.search(params[:keyword])
end
5.最後に
検索機能自体は他のアクションと同じように設定できますので、モデルの指定だけ特徴をつかめば簡単に実装できます。是非実装してみましょう。