2012年07月14日

Rails3とsimple_formとjquery_datepickerのお話

ある日、麦汁さんはふと 「そうだ、リハビリのためにblogみたいな何かを作ろう」 なんてことを考えました。

そんなわけでいつものように

$ rails new awesome-blog

と入力してrailsアプリな雛形を作り、その中に移動

$ cd awesome-blog

しました。

そういえば最近はsimple_formなるgemがあって こいつを使うとフォームを書くのが楽らしいぞということで おもむろにGemfileを開いて

gem "simple_form"

などと書き込んで後に 一心不乱に

$ bundle install

などと入力しました。

そして果敢にも

$ rails g simple_form:install

などと入力し、simple_formを利用できるようにしたのです。

それから

$ rails g scaffold Entry date:date title content:text

という風に大胆にもEntryモデルの雛形を作ってしまいました。

そして厳かに "app/views/entries/_form.html.haml" を開いてみると

<%= f.input :date %>

などと書かれているのを確認。 「ああ、これは、year,month,dayの3つのselectが出て来るあのダサくて有名な彼か」 というわけで生意気にも「こいつには頼りたくない」なんて考えました。

「どうせならあの最近流行りのjQueryさんのDatePickerさんを使いたい」 なんて不埒なことを考え始めました。

というわけでgemを調べてみると "jquery_datepicker"なんていうまさしくそいつだという素敵なgemがあるではありませんか。

彼はのんびりしてはいられないと、早速Gemfileに

gem "jquery_datepicker"

と追記しました。

また、このgemがjQueryUIのテーマを必要とするらしいので 面倒臭がりながらも先程と同様に

gem "jquery-ui-themes"

などと追記し、 ゴーバスターズのエンターさんの物真似で「メタウイルス、インストール」などと言いつつ

$ bundle install

というコマンドを実行しました。

そしてjQueryUIが使えるように "app/assets/javascripts/application.js"に

//= require jquery-ui

を追加し、さらにjQueryUIのテーマの一つである"blitzer"が使えるように "app/assets/stylesheets/application.css"に

*= require jquery-ui/blitzer

なんて適当に書き加えてみました。

しかしここからdatepickerのそれをどうやってsimple_formに放り込めばいいのかわかりません。

仕方がないから気軽にsimple_formを拡張することにしました。

まずはこそこそと

$ mkdir app/inputs

なんて叩いてディレクトリを掘ってしまいます。

そして出来上がったディレクトリの中に粛々と "datepicker_input.rb"というファイルを作ってしまいます。

その恐しい中身はというと

class DatepickerInput < SimpleForm::Inputs::Base
  def input
    @builder.send(:datepicker, attribute_name, input_options)
  end

  def input_options
    { :dateFormat => "yy/mm/dd"}
  end
end

なんとこのようになっているのです。

それから再度"app/views/entries/_form.html.erb"をこじ開け

<%= f.input :date %>

という、実にシンプルで慎ましやかな姿から

<%= f.input :date, as: :datepicker %>

などという派手な姿に変えてしまうのです。

ここでようやく思い出したかのように

$ rake db:migrate
$ rails s

と続けざまに二つもコマンドを入力し、 あまつさえWebブラウザから http://localhost:3000/entries/new にアクセスしたのです。

するとすると、どういうことでしょうか。 あの見るに耐えない3つのselectからなるdate_selectのUIがあるはずが、 それは見る影もなく その代わりに美しいjQueryUIのdatepicker様のお姿があるではありませんか。

飽きた。

calendar_date_selectがオワコンらしいから調べてたんでこんなん書いたけど、 これ書くまで jquery-ui-themes ってgemの存在を知らなかったのでラッキーでござる。

posted by 麦汁 at 02:34 | Comment(0) | TrackBack(0) | rails | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。