わたろぐ

仕事、読書、ガジェット、グルメ、写真、旅行など雑多な備忘

Ruby on Railsを触ってみる ⑩検索機能 Ransackの実装

検索機能を実装してみる。某先輩のブログでRansackというgemが勧められていたので、早速使ってみよう。

Gemfileの編集をしてbundle install [ruby] gem 'ransack' [/ruby]

route.rbを修正して、検索用のルーティングを追加する。 [ruby] resources :tweets do collection do get 'import_csv_new' post 'import_csv' get 'archives/:yyyymm', :action => :archives, :as =>'archives' get 'search/:q', :action => :search, :as =>'search' end end [/ruby]

controllerにアクションを追加します。パラメタで受け取ったキーワードを含む結果で絞り込みます。 [ruby] # GET /tweets/search/keyword def search @tweets = @user.tweet .search(:text_cont => params[:q]).result .order(:id) .page params[:page] end [/ruby]

viewファイルsearch.html.erbを作成します。ほぼarchives.html.erbの流用です。 [ruby]

<%= params[:q] %>の検索結果

<%= render(@tweets) %> <% if @tweets.count == 0 %>

<%= params[:q] %>に一致するツイートはありませんでした。

<% end %> <%= paginate (@tweets) %> [/ruby]

とりあえず動かしてみて、キーワードを適当に渡して見る。 もう実装できた。これは簡単。

あとは検索フォームの設置。それっぽくサイドバーに設置してみる。 サイドバーに設置するため、view/layouts/tweets.html.erbを修正する。 [ruby]

[/ruby]

こんな感じに。 Rails楽しい。

Add search form twata701/twice GitHub