Railsで検索をSQLで簡単に実装する方法

  • 29
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

あらかじめ完成しているindexページに検索機能を追加する。今回はSQLでのLIKE演算子を使ったシンプルな検索を実現する。
Viewには

<%= form_tag stories_path, :method => "get" do %>
<%= text_field_tag :title, params[:title] %>
<%= submit_tag "検索"%>
<% end %>

と書いておいて、
controllerのindexメソッドには、機能追加前は

@products = Produc.all

と書いてあったりするけど、そのかわりに

@products = Product.where("title LIKE ?", "%#{params[:title]}%")

を書き足す。

これで完成。
いちおう%#{}%で囲ってエスケープはしてあるけど、もしかしたらSQLインジェクションの穴があるかも。セキュリティチェックが必要。