2
1

More than 3 years have passed since last update.

Railsでシンプルな検索機能を実装する

Posted at

RailsでGem等を使わず、余計なメソッドを作ったりもせずにとにかくシンプルに検索機能を実装する方法です。

今回はtitleというカラムを持つpostsテーブルを検索するという状況設定で話をします。

フォームを作る

index.htmlに検索フォームを作ります。
検索はテーブルに変更を与えないため、form_tagを使用します。

view/index.html.erb
<%= form_tag('/search', :method => "get") do %>
 <input type="text" name="keyword">
 <input type="submit" value="検索">
<% end %>
}

コントローラーに検索用のアクションを定義する

2行目で検索フォームから送信された値をkeywordというパラーメーターで受け取っています。
3行目ではtitleに@keywordを含む列を検索し、@postsに代入します。

posts_controller.rb
def search
 @keyword = params[:keyword] 
 @posts = Post.where("title LIKE ?", "%#{@keyword}%")
end

検索結果の表示

まず検索結果を表示するためのページをルーティングで設定します。

routes.rb
get 'search' => 'posts#search'

最後に検索結果を表示するためのhtml.erbファイルを作成します。
今回は適当に検索結果のtitleだけ表示します。

view/search.html.erb
<% @posts.each do |post| %>
 <%= post.title %> 
<% end %>
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1