コントローラーとは、リクエストに対してどのような処理を行うかを定義するところになります。
リクエストに対応する処理をまとめて用意しておき、ルーティングからリクエストを受け取って処理を行った後、クライエントにレスポンスを返します。
具体例を挙げると
ルーティングから送られてきた「トップページを表示する処理」に対して、実際の処理内容について定義します。
レスポンスに必要となるデータがあれば、モデルと連携してデータ取得をしたり、受け渡しを行い、レスポンスを完成させます。
Railsにおいて新規アプリケーションで、コントローラーを作成する際は、ターミナル上で下記のコマンドを実行します。そうするとコントローラーを記述するためのファイルが生成させます。
rails g controller コントローラー名
*gは英語で「生成する」を意味するgenerateの略です。
*コントローラーの命名規則は、複数形を使用します。
具体例を挙げて説明していきます。
実際に、ターミナル上でrails g controllerをする際は、
現在、どのディレクトリにいるかを確認します。
作成しているアプリのディレクトリ下に移動して、コマンドを実行するようにします。
ターミナル上で下記のコマンドを実行する。
rails g controller posts
そうすると、このような表示がされます。
Running via Spring preloader in process 24861
create app/controllers/posts_controller.rb
invoke erb
create app/views/posts
invoke test_unit
create test/controllers/posts_controller_test.rb
invoke helper
*createは「生成したファイル」という意味です。
*invokeは生成したファイルに関連するフレームワークの機能を表しています。
そうすると、VSコードに上記のファイルが生成されています。
コントーローラーを定義するためのファイルが生成できたので、実際にコントローラーにアクションを定義していきます。
アクションは、コントローラーにインスタンスメソッドとして、定義していきます。
どの動作を行うかによって、種類が分かれます。
アクション名 |
どのような時に動くか |
index |
一覧表示ページを表示するリクエストに対応して動く |
new |
新規投稿ページを表示するリクエストに対応して動く |
create |
データの投稿を行うリクエストに対応して動く |
show |
個別詳細ページを表示するリクエストに対応して動く |
edit |
投稿編集ページを表示するリクエストに対応して動く |
update |
データの編集を行うリクエストに対応して動く |
destroy |
データの削除を行うリクエストに対応して動く |
コントローラーにアクションの設定をする際の記述は、
def アクション名
end
と記述します。