Controllerの基本を学ぼう(*‘ω‘ *)

Railsアプリの「司令塔」であるコントローラの役割を理解しよう!

Controllerなしでは何も始まらない!

じつはRailsは、Controllerがないと何も動きません!
Model(シェフ)もView(盛り付け役)も、Controller(店長)の指示がないと動けないのです。
なので、まずはViewやModelよりも先にControllerをマスターしましょう(`・ω・´)

コントローラを作ってみよう!

手動でファイルを作るより、コマンド一発で作るのがRails流です。
今回は my という名前のコントローラを作ってみましょう。

$ rails generate controller my

コマンドを叩くとファイルがドバーッと生成されますが、今一番大事なのはこれです!

  • app/controllers/my_controller.rb … コントローラのプログラム本体

中身を見てみよう

生成されたファイルの中身は、だいたいこんな感じです。

class MyController < ApplicationController
end

クラスの継承ってなに?(゜-゜)

< ApplicationController という記号は、「継承(親子関係)」を表しています。
例えるなら、「ApplicationController(親)」の遺伝子や能力をすべて受け継いで、「MyController(子)」が生まれたイメージです。
このおかげで、難しい設定をゼロから書かなくても、Railsの便利な機能が最初から使えるのです!

簡単なページを作成してみよう(*‘ω‘ *)

実際に手を動かしながらやると、処理のイメージが湧きやすいです!
さきほどの my_controller.rb を以下のコードに書き換えてみましょう。(コピペでOK)

1

Controllerにアクションを追加

app/controllers/my_controller.rb
class MyController < ApplicationController
  # page1という名前のアクション(仕事)を定義
  def page1
    # 本来はViewファイルを作りますが、今回は手軽に実験するため
    # コントローラから直接HTMLを返してみます!
    render html: "

初めてのページ!

コントローラから直接返しています(`・ω・´)

".html_safe end end

render html: ... は「Viewを使わず直接画面を表示する」という命令です。

2

「ルート(道案内)」を作成

コントローラを作っただけでは、ブラウザはどこにアクセスすればいいか分かりません。
「受付窓口(config/routes.rb)」に、「このURLに来たら、このコントローラを呼んでね」と登録する必要があります。

⚠️ ファイル名は route.rb ではなく routes.rb (複数形) です!注意!
config/routes.rb
Rails.application.routes.draw do
  # 「/my/page1」にアクセスが来たら、「myコントローラ」の「page1アクション」を動かす
  get 'my/page1'
  
  # ↓これは「トップページに来たら /my/page1 に転送する」という設定です
  root to: redirect('/my/page1')
end
3

ブラウザで確認!

準備完了です!サーバーを起動してアクセスしてみましょう。

$ rails server

起動したら、以下のURLにアクセスしてみてください。
'http://localhost:3000/my/page1'

ブラウザにこんな感じで表示されれば大成功です!(*^^*)




次の記事では実際にViewを使ってもっとおしゃれにページを作ってみましょう(*‘ω‘ *)