Controllerの基本を学ぼう(*‘ω‘ *)
Railsアプリの「司令塔」であるコントローラの役割を理解しよう!
Controllerなしでは何も始まらない!
じつはRailsは、Controllerがないと何も動きません!
Model(シェフ)もView(盛り付け役)も、Controller(店長)の指示がないと動けないのです。
なので、まずはViewやModelよりも先にControllerをマスターしましょう(`・ω・´)
コントローラを作ってみよう!
手動でファイルを作るより、コマンド一発で作るのがRails流です。
今回は my という名前のコントローラを作ってみましょう。
コマンドを叩くとファイルがドバーッと生成されますが、今一番大事なのはこれです!
-
app/controllers/my_controller.rb … コントローラのプログラム本体
中身を見てみよう
生成されたファイルの中身は、だいたいこんな感じです。
class MyController < ApplicationController
end
クラスの継承ってなに?(゜-゜)
< ApplicationController という記号は、「継承(親子関係)」を表しています。
例えるなら、「ApplicationController(親)」の遺伝子や能力をすべて受け継いで、「MyController(子)」が生まれたイメージです。
このおかげで、難しい設定をゼロから書かなくても、Railsの便利な機能が最初から使えるのです!
簡単なページを作成してみよう(*‘ω‘ *)
実際に手を動かしながらやると、処理のイメージが湧きやすいです!
さきほどの my_controller.rb を以下のコードに書き換えてみましょう。(コピペでOK)
Controllerにアクションを追加
class MyController < ApplicationController
# page1という名前のアクション(仕事)を定義
def page1
# 本来はViewファイルを作りますが、今回は手軽に実験するため
# コントローラから直接HTMLを返してみます!
render html: "初めてのページ!
コントローラから直接返しています(`・ω・´)
".html_safe
end
end
※ render html: ... は「Viewを使わず直接画面を表示する」という命令です。
「ルート(道案内)」を作成
コントローラを作っただけでは、ブラウザはどこにアクセスすればいいか分かりません。
「受付窓口(config/routes.rb)」に、「このURLに来たら、このコントローラを呼んでね」と登録する必要があります。
route.rb ではなく routes.rb (複数形) です!注意!
Rails.application.routes.draw do
# 「/my/page1」にアクセスが来たら、「myコントローラ」の「page1アクション」を動かす
get 'my/page1'
# ↓これは「トップページに来たら /my/page1 に転送する」という設定です
root to: redirect('/my/page1')
end
ブラウザで確認!
準備完了です!サーバーを起動してアクセスしてみましょう。
起動したら、以下のURLにアクセスしてみてください。
'http://localhost:3000/my/page1'
ブラウザにこんな感じで表示されれば大成功です!(*^^*)
次の記事では実際にViewを使ってもっとおしゃれにページを作ってみましょう(*‘ω‘ *)