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
-, ,

執筆者:

関連記事

jQuery UI BootstrapにGoogle Mapが来た〜gmap3

RailsでOAuthを使うには~OmniAuth

By: Freenerd – CC BY 2.0   github.com/intridea/omniauth   目次1 OmniAuthの受け持つ役割2 Rails …

Rails4とD3.jsでローソク足グラフを描く〜d3.js編

前回 Rails4とD3.jsでローソク足グラフを描く〜Rails準備編 目次1 jsonデータ2 y_scaleを考える3 始値と終値から箱をつくる4 高値と安値でひげをつくる5 y_axisをつけ …

no image

Rails3で動画配信を試用~flowplayer

  最近はYoutubeなど動画配信サイトも充実してきていて知人向けのプライベートな配信も可能なようだ しかし、やっぱりYoutubeにアップするのは抵抗があったり、LAN内だけで配信したい …

RailsでECサイト構築6 固定ページを作る~spree

  ECサイトを作成するときには日本の法律にしたがって色々と表示しなければならない 表示しなければならないことについては次のページが詳しかった 本サイトについて 実際のECサイトをみれば実例 …