はじめに
Railsチュートリアルの第3章が終わりました。
ポイントだけメモしておきます。
コントローラーの作成
rails generate
コマンドでコントローラーを作成します。
アクション名はスペース区切りで複数作成できます。
※私はDocker上で動かしているので、先頭にdocker-compose run webをつけています。
$ rails generate controller "コントローラー名" "アクション名"
rails generate
の部分はrails g
と省略して記述できます。
また、コントローラー名はキャメルケースで記述します。そうすると、自動でスネークケースでコントローラーのファイルを作成してくれます。
(例:StaticPages → static_pages_controller)
また、自動生成したコントローラーを削除したい場合は、generate
の部分をdestroy
に書き換えて実行します。
ページ表示の簡単な流れ
URLにアクセスすると、まずconfig/routes.rb
ファイルを元にコントローラーとアクションを決定します。
例えば、以下はGETでstatic_pages/home
というURLにアクセスした際のルートを定義しています。
get 'static_pages/home'
次に、ルートを元にコントローラーにアクセスします。
static_pages/home
であれば、static_pages_controller
のhome
アクションにアクセスします。
以下のアクションに記述された処理を実行します。
def home
end
その後、app/view/"コントローラー名"/"アクション名".html.erb
の内容をviewとして表示します。
static_pages/home
であれば、app/view/static_pages/home.html.erb
です。
テスト
テストは、コントローラーのテストあれば、test/controllers
配下にあります。
例えば、以下であれば、GETでhomeにアクセスして、成功するかというテストです。
test "should get home" do
get static_pages_home_url
assert_response :success
end
以下のコマンドで、テストを実行します。
$ rails test
Rubyの埋め込み
erb
ファイルにはRubyのコードを埋め込むことができます。
<% 〜 %>
では括弧内の処理を実行するだけで、<%= 〜 %>
では括弧内の処理の実行結果を挿入します。
また、app/views/layouts/application.html.erb
が全体の共通テンプレートのようなもので、そのbodyタグ内の<%= yield %>
の部分に、view配下のerbファイルが展開されるイメージです。
<body>
<%= yield %>
</body>