Ruby
Rails

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

More than 5 years have passed since last update.

あらかじめ完成している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インジェクションの穴があるかも。セキュリティチェックが必要。