ルーティングファイルの役割
RailsがユーザーのブラウザーからGETやPOSTなどのリクエストを受け取ると、まずルーティングファイルを参照する。
ルーティングファイルには、リクエストの種類、リクエストのターゲットURL、ターゲットURLに対応するコントローラーとアクションが記述されている。
その内容に従って必要なコントローラーが呼び出されて処理を行った後、ユーザー側へレンダリングされた内容が返される。
ファイルの位置とファイル名
ルーティングファイル(routes.rb
)は、プロジェクト生成時にconfig
ディレクトリー下に生成される。
config/routes.rb
ファイルの内容
アクションを指定してコントローラーを生成すると、routes.rbにそのアクションへのルーティングを記述した1行が追加される。
たとえばコントローラーとしてdemo_contents
、そのアクションとしてtop_page
を指定して生成すると以下のような内容でルーティングの記述が追加される。
1 2 3 4 |
Rails.application.routes.draw do get 'demo_contents/top_page' # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end |
一方、アクションを指定せずにコントローラーだけ指定して生成すると、route.rb
への追加は行われない。
1 2 3 |
Rails.application.routes.draw do # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end |
基本的なルーティングの書き方
URL指定
以下の3つの記述は全て等価で、ブラウザーからURLをlocalhost:3000/demo_contents/top_page
と指定してGETリクエストしたとき、demo_contents
コントローラーのtop_page
アクションが実行される。
1 2 3 |
get 'demo_contents/top_page' get 'demo_contents/top_page' => 'demo_contents#top_page' get 'demo_contents/top_page', to: 'demo_contents#top_page' |
2つ目と3つ目の記述法では、URLに他の表現を設定することが可能。
以下の例ではlocalhost:3000/foo
を指定した時に、demo_contents
コントローラーのtop_page
アクションが実行される。
1 2 |
get 'foo', to: 'demo_contents#top_page' get 'foo', controller: 'demo_contents', action: 'top_page' |
ルートページの指定
ルートページとして特定のコントローラー・アクションを設定するときは、以下の様に記述する。
1 2 3 |
root 'demo_contents#top_page' root :to => 'demo_contents#top_page' root to: 'demo_contents#top_page' |
項設定すると、localhost:3000
のようにブラウザーからリクエストするとdemo_contents
のtop_page
アクションが実行される。
基礎的なルーティング
rails routes
によるルーティングの確認、to:
によるURLの置き換え、as:
による名前付けなどの基礎的な事項は以下にまとめた。
RESTful
今後