初めてのRailsアプリ(その2)

railsubject_02

初めてのRailsアプリ(その2)

HABTMとかHMTとか。この略称に関しては、バック・トゥ・ザ・フューチャーはBTTF、リターン・トゥ・フォーエバーはRTFだと知った時なみに衝撃を受けてます。

はじめに

アプリは前回(その1)からのひき続きです。

2. has_many throughアソシエーション

前回はhas_and_belongs_to_many(HAB™)で組もうかと思ってたが、has_many through(HMT)の方が拡張性が良いとらしいので、こちらを勉強する。HMTの方が直感的にも素直。 参考サイト

ER図

今回はここ

f:id:naotooncajon:20130723002316p:image

変更点

前回より以下の点を変更する。

モデル
  • has_many throughの関係を記述
  • subject_idsというアクセッサを追加
  • name_contentというgetを追加
    • 本筋ではないが、サンプルアプリをわかりやすくするため

f:id:naotooncajon:20130723002320p:image

コントローラ

変更なし。(すげー)

ビュー
  • _form
    • f.selectを追加
    • 選択範囲は、全てのSubject
    • 複数選択を許容(:multiple => true)
    • 選択肢の表示にはname_contentを利用
  • show
    • @groupを通してsubjectsにアクセス
      • 中間モデルsubject_groupsは意識していない
    • 表示にはname_contentを利用

f:id:naotooncajon:20130723002309p:image

完成形

f:id:naotooncajon:20130723002324p:image

3. jQuery on Rails

UIをもう少し拘りたいので、jQueryを利用する

jQueryの導入

'jquery-rails'と'jquery-ui-rails'をgroup :assetsの中に入れる。

f:id:naotooncajon:20130723002302p:image

application.jsおよびapplication.cssでrequireする。

f:id:naotooncajon:20130723002327p:image

assetsをプリコンパイルしておく。

rake assets:precompile

試しにdatepickerを利用してみる。

f:id:naotooncajon:20130723002304p:image

こんな感じ

f:id:naotooncajon:20130723002258p:image

終わりに

次にやりたいことは以下

  • groupでsubjectを選択する際のUI高度化
  • mailでメールを送る
  • uploadでファイルをアップロードする