Railsチュートリアル

Rails チュートリアル メモ 第3章

暗記事項

コントローラーの作成

# rails generate controller コントローラ名(キャメルケース,複数形) メソッド名(小文字) メソッド名(小文字) ...
rails generate controller StaticPages home help

コントローラ名をキャメルケースで指定すると、それをスネークケースにした名前で実ファイルが作成される(今回だと static_pages_controller.rb)。もともと ruby コミュニティではキャメルケースが好んで使われていたが、ことファイル名は OS によってケースセンシティブだったりそうでなかったりするので、ややこしくならないようにスネークケースを使うようにした ... というのは今考えた でっち上げ だが、そう覚えると覚えやすいかもしれない。

generate の取り消し

destroy を使うだけ。参考のために、作成メソッドと並べてメモ。

# コントローラーの作成と取り消し。メソッド名が必要。
rails generate controller StaticPages home help
rails destroy  controller StaticPages home help

# モデルの作成と取り消し。こちらはなぜかカラム名が不要(理由は6章)。
rails generate model User name:string
rails destroy  model User

# マイグレーションの実行と取り消し。詳しくは6章。
rails db:migrate
rails db:rollback

コントローラーのテストでよく使いそうな minitest のメソッド

  • get
  • assert_response
  • assert_select

メモ

layouts

特に何も指定しなかった場合、layouts/application.html.erb が大枠として使われ、yield 部分に各アクションに対応した erb ファイル(例: home.html.erb)が埋め込まれる。逆に言うと、layouts ファイルには既に html タグや head タグ等が記述されているため、home.html.erb 側に head タグを書いてはならない。試しにやってみると、body タグ内に title タグが出現したり、なんだか変なことになった。

気になること

GET リクエストに対するルーティング

get 'static_pages/home'

これだけのコードで、

  • StaticPages コントローラの home メソッドが実行される
  • (home メソッドが空にも関わらず)views/static_pages/home.html.erb が描画される

という挙動をする。これはいわゆる「規約」によるものなのだろうか?

また、その後のテストコードで static_pages_home_url というヘルパーを使用している。こんなヘルパーが定義される効果もあるらしい。確か名前付きルートというやつだったか。