サーバー起動
rails server
トップページ自動生成
- このコマンドを実行すると、新しいWebページが自動で作られ、「localhost:3000/home/top」というURLにアクセスできる
- viewsフォルダの中に「homeフォルダ」と「top.html.erb」というファイルが作成される
- 場所はapp/views/home/top.html.erb
rails generate controller home top
コントローラ
- 「rails generate controller home top」を実行したとき、「home_controller.rb」というコントローラのファイルが作成され、ファイルの中に「topメソッド」が追加される
- コントローラ内のメソッドを「アクション」と呼ぶ。アクションは、コントローラと同じ名前のビューフォルダから、アクションと同じ名前のHTMLファイルを探してブラウザに返す
class HomeController < ApplicationController def top end end
ルーティング
- Rails内ではコントローラを経由してビューを返しているが、ブラウザとコントローラを繋ぐ役割を担うのがルーティング
- ページが表示されるまでに、ルーティング→コントローラ→ビューという順で処理が行われている
- ルーティングは、送信されたURLに対して「どのコントローラの、どのアクション」で処理するかを決める「対応表」
- ブラウザでURLを入力すると、ルーティングがURLを見て、適切なコントローラのアクションを呼び出す
- ルーティングは「config/routes.rb」に定義され、「get "URL" => "コントローラー名#アクション名"」という文法で書かれる。これによって、ブラウザから「localhost:3000/home/top」というURLが送信されたときに、homeコントローラーのtopアクションで処理される
Rails.application.routes.draw do get "home/top" => "home#top" end
ちなみに、下記のようにすると「localhost:3000/top」でトップページになる
Rails.application.routes.draw do get "top" => "home#top" end
ルーティングとアクションの追加
- 「rails generate controller コントローラ名 アクション名」を実行することで、コントローラと、それに対応したファイルが自動で用意される
- しかし、同じ名前のコントローラがすでにある場合は、このコマンドを使うことはできない
- すでに作られているルーティングとコントローラのファイルにコードを書き足すことで、ルーティングとアクションを追加できる
class HomeController < ApplicationController def top end def about end end
Rails.application.routes.draw do get "top" => "home#top" get "about"=>"home#about" end
画像
- 画像は、「public」フォルダに配置しておくと、「img src="/画像名" 」や「background-image: url("/画像名");」のように、画像名を指定するだけで、簡単に画像を表示することができる
- 不思議ですねえ
「localhost:xxxx」でトップページにアクセスできるようルーティング書き換え
Rails.application.routes.draw do get "/" => "home#top" get "about" => "home#about" end