【Rails基礎講座 7】Railsのかんたんなレイア... >
TODOアプリ解説②

TO DOアプリ解説①

吉田先生

今後railsでアプリ開発を行うにあたってセカンドモデルはよく登場します。1対多の関係を理解して、コードの書き方や関連付けの方法をマスターしましょう。

◎TODOアプリ解説②

1.ITEMの作成

ITEMの作成をしましょう。

まずはLIST作成時と同様にデータ設計を基に必要なモデルを作成します。

$ rails g model Item name:string list:references

モデルを作成したら、必ずマイグレーションを実行します。

$ rake db:migrate

これで必要なデータテーブルが作成されました。次にroutesファイルを開いてください。ここでもListの時と同様にroutesに何のデータをもとにするかを宣言し、必要なHTTPメソッドを作ってもらいます。1点異なるのはITEMは1つのリストに対して複数登録することができるという点です。教程④で解説したセカンドモデルということですね。教程④では1つのarticleに対して複数のcommentが存在しました。その為2つのモデルの関連付けが必要でしたね。

今回は1つlistに対して複数のitemが存在することになります。そのためlistとitemモデルには関連があるということをRailsに教える必要があります。

routesファイルには既に resouces: list と記述があります。

itemに関してもroutesファイルに記述してHTTPメソッドを作成してもらいましょう。以下のようにコードを追加して保存してください。

Rails.application.routes.draw do
  resources :lists do
    resources :items
  end
  root 'welcome#index'
 end

$ rake routesで確認すると、各アクションへのパスが追加で作成されていることがわかります。

2.2つのモデルの関連づけ

2つのモデルを関連付けさせましょう。list.rbファイルとitem.rbファイルを開いてください。先ほどroutesファイルに追記したことでitem.rbファイルには自動的にbelongsto :listとコードが追加されています。その為list.rbファイルに hasmany :items と追記して保存してください。

これによって2つのモデルが関連付けされました。

3.コントローラの作成

ではitemモデルとの仲介をしてくれるコントローラを作成しましょう。命名ルールに注意してください。コントローラの場合は複数形でしたね。

$ rails g controller items

コントローラファイルができました

4.フォームの追加とcreateアクション

itemsコントローラのアクションに対応したviewファイルは必要ありません。教程④のセカンドモデルのチャプターで解説したように、アイテムは投稿されたリストに対して入力されるものです。その為リストが表示されている画面にアイテムの入力欄がなくてはいけないからです。

つまり、listのviewファイル(app/views/lists/show.html.erb)にアイテムのフォームコードを追加して、アイテム作成用のフォームとアイテムの表示部分を作成すれば良いのです。

ここではフォームの作成にformforを使用しています。現在のrailsでは、formfor 、formwithのどちらのヘルパーメソッドも使用できます。しかし、formwithの方が新しいメソッドの為、formwithメソッドとformforメソッドの違いについては確認しておいた方が良いでしょう。

まとめ

今回は画像の追加から、モデルに新しい属性を追加する方法、CSSについて…など応用的な内容を解説しました。またこれまでのレッスンで解説した内容を利用してto_doアプリを作成しました。実際にアプリ作成に挑戦して、うまくいかないところが出てきた場合などは過去のレッスンを見返してみてださいね。

無料ビデオ講座のお知らせ

Skillhub [スキルハブ]では無料の動画講座を多数公開しています。他校だと数万円するような講座が無料で受講できます。

無料講座一覧を見る