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

railsubject_01

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

ようやくrailsがわかってきたので、それっぽいお題をこなしてみる。頑張る(´・ω・`)

はじめに

アプリ概要

f:id:naotooncajon:20130721215539p:image

Scaffold

rails generate scaffold subject name:string content:string
rails generate scaffold mail subject:references name:string address:string
rails generate scaffold upload subject:references name:string path:string
rails generate scaffold group name:string
rails generate model subject_group subject:references group:references

画面(subject#index)

f:id:naotooncajon:20130721215550p:image

1. has_manyアソシエーション

subjectとuploadの関係(1対多)を実装する。(mailも同じ要領なのでここでは割愛)

参考サイト

画面構成

f:id:naotooncajon:20130721215601p:image

変更点

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

config/routes.rb

uploadsのresoucesをsubjectsのresoucesの中に入れる。

f:id:naotooncajon:20130721215616p:image

モデル

has_manyおよびbelongs_toの関係を明記。

f:id:naotooncajon:20130721215547p:image

f:id:naotooncajon:20130721215530p:image

コントローラ(subject)

変更なし

コントローラ(upload)

uploadから親のsubjectヘ参照できるようにする。beforeフィルタを使い、@subjectを宣言。

f:id:naotooncajon:20130721215535p:image

@subjectを利用した@uploadの取得およびリダイレクトの設定を行う。

f:id:naotooncajon:20130721215605p:image

もうちょっと。(意外にに修正箇所は広範囲。やることは簡単なんだが。。。)

f:id:naotooncajon:20130721215557p:image

view(subject)

subject#showの中で、upload#indexを表示させるようにする

f:id:naotooncajon:20130721215609p:image

view(upload)

indexのeach対象を@uploadsから@subject.uploadsに変更。あとはリンク先の修正

f:id:naotooncajon:20130721215543p:image

f:id:naotooncajon:20130721215612p:image

完成形

f:id:naotooncajon:20130721215554p:image

終わりに

次にやりたいことは以下

  • groupでhas_and_belongs_to_manyを実装する
  • mailでメールを送る
  • uploadでファイルをアップロードする