ある日、麦汁さんはふと 「そうだ、リハビリのために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の存在を知らなかったのでラッキーでござる。

