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]
こんな感じに。 Rails楽しい。