RailsでTwitterBootstrap Railsで使えるGem

Rails3でTwitter Bootstrapのサーチフォームを実装する~form_tag

投稿日:

git & gitolite

最近、gitoliteでソース管理をはじめたので、今までの変更をコミットした後、新しいブランチにチェックアウトする

と言ってもデスクトップとMBAでサンプルアプリのソースを行き来しているだけだが

 

仕組みを考える

参考 #240 Search, Sort, Paginate with AJAX @RailsCasts

特に考えることがないほど、Head First Railsにもあったような簡単なサーチフォーム

モデルに関係ないform_tagからparams[:search]という名前で検索語を投げてindexを呼んで、コントローラかモデルでMySQLのLIKEクエリを投げればよい

図形はGoogleドライブで作成した

フィーチャの作成

今回はテストファーストでフィーチャからフィーチャで使える(認識される)日本語はコマンド cucumber --i18n jaで一覧できる

こんなかんじで

ステップは今までのでいらないはず

最初、マッチしないなあと思っていたら、ページを表示するのを忘れていた

StackOverflowに同じ相談している人がいて気づいた

Viewの作成

Twitter Bootstrapのページから適当に実装する

form_tagなのでsimple_formはつかえない

これでfill_in ‘search’を認識した

Controllerの作成

基本的にはWHERE title LIKE %query% っていうSQLを渡せばいいんだけど、queryが空のときの処理が必要

searchって名前のメソッドを作って処理する

ちなみにLIKE検索は重いしスペース区切りしない日本語に向いてないので、もっと長い日本語やスピードを求めるときは転置インデックスをつけたりする方法を考えなければならない

方法とすると、hyper estraierやsolrのような全文検索を別に用意するか、PostgreSQLのtextsearch_jaとかMySQLのTritonnとかのプラグイン、groongaなどのストレージエンジンを使うなどがある

まあどれもハードルがそこそこ高いので今回はパスした

Modelの作成

elseの処理がscopedなのはページネーションを使ってるから

テストが通らない!

ここまでで完成のはずだけどテストが通らない

なぜなら検索ボタンを押しても、並び替えが機能して逆順に並んでしまうから

ぬぅ

セッションをあきらめて、hidden_formでパラメータを送ってきたときだけ処理することにして、送るパラメータはヘルパーで書くことにした

mergeして終わり

テストが通ったらmastarにmergeして終わり

ホントはテストが通らない時点で、もとのコミットまで戻ってから新しいブランチを作りなおして、並び替え機能をリファクタリングしてから、マージしなきゃいけないんだろうな

とりあえずTwitter Bootstrapが適用されていて、Validationとかもきれいに表示されて、並び替えとページネーションと絞込みができるテーブルがついたひな形がテスト付きで作成できたので満足した

ajax化しておきたいが、テストが軒並み通じなくなるので留保

つぎは関連性を表現するモデルとそのビューをひと通りやってみたい

-RailsでTwitterBootstrap, Railsで使えるGem
-, ,

執筆者:

関連記事

FullCalendarのagendaViewでselectの場所がずれる問題

  By: Ben Piddington 前回 Rails3.2でGoogle Calendarライクなカレンダーを使う〜fullcalendar-rails   gemは最新の1 …

Rails3.2とBackbone.jsでサーバーサイドのソーティング

By: Haldane Martin – CC BY 2.0   Rails3.2とBackbone.jsでサーバーサイドのフィルタリング 次はソートを実装したい 目次1 サーバ …

no image

Rails3.2+MongoDBでつくったアプリをheroku+mongoHQにアップしたよ

Stack Overflowはなんでも答えてくれる エラーメッセージをコピーしてググればたいていの答えはStack Overflowで出尽くしている 目次1 Gemfile2 herokuにアプリ作成 …

TwitterBootstrapでアイコンが微妙な感じだったらFontAwesomeを試してみるといい

かもしれない fortawesome.github.com/Font-Awesome/ hallojsで使ってるのは上 github.com/bokmann/font-awesome-rails gi …

Rails3.2で位置情報を日本語表示の住所に変換する~geocoder

ついにブログ記事が100件突破した! そのうちメニュー項目などをわかりやすく構成し直したいと思う いまはRailsのプログラムが楽しくて仕方ない時期なので色々と試して書き溜めたいと思う EverNot …