rails tutorial memo (MVCについて)
前回までの記事
- rails tutorial memo (rails 開発環境構築) - ニートのMEMO
- rails tutorial memo (Gemfile書き方) - ニートのMEMO
- rails tutorial memo (rails server) - ニートのMEMO
MVC とは
- Model-View-Controller のこと
- Rails application 内の app ディレクトリにある 「models」「views」「controllers」で管理
- Model は Controller が要求した情報を元に必要なデータを DB から取得する
- View は Controller が要求した情報を元に View を構築する
- Controller は ブラウザから来た要求に対して、Model や View に処理を振り分け中継する
- MVC では画面表示と内部のアプリケーションを別のコードで処理している
- ① ブラウザから Webサーバに Request が来ると Controller が中継してすぐに View を構築して html をブラウザに返す場合
- ② ブラウザから動的サイトに Request が来ると View を構築する前に Model がユーザ情報などを DB から取得してから Controller が View の構築を行い html をブラウザに返す場合
Controller
- 新規で Controller を作成していない場合は、
app/controllers/application_controller.rb
(application コントローラ)のみが存在する - 上記のファイルに処理を記載することで画面の表示などの処理を変更できる
# Hello World! を画面に表示するだけの Controller class ApplicationController < ActionController::Base def hello render html: "Hello World!" end end
- Hello Wold 用のアクションを定義したが、デフォルトだと上記の Controller が参照されないため、ルーティングをする必要がある
Router
- Router はブラウザと Controller の間に配置し、ブラウザからの Request を Controller に振り分ける役割
- ルーティングを変更する場合は、
config/routes.rb
に記載する
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html root 'application#hello' end
- 上記の
root 'application#hello'
では application コントローラ の hello アクションを呼び出すというルーティングをしている