ルーターとコントローラー(1)

ルーターとコントローラー

ルーターの役割

クライアントのブラウザから発信された、URIによる要求(HTTPリクエスト)を受け取り、どのコントローラーの、どのアクションに割り当てるかを判断する。

割り当ての設定(ルーティング設定)は、routes.rbファイルを使って行う。

ルーティング設定のやり方

大きく分けるとリソースフルルートと非リソースフルルートの二種類がある。

リソースフルルート

リソース操作を満たすルートとして、一連の「お決まりの作業」を一纏めに表現する。 resourcesルートを設定する事で、対象となるモデルに対する7つの標準的なアクションに対応するルートを一括で設定できる。

例えば、

resources :users

とroutes.rbに記述すると、Userモデルに対するリソースフルルートが設定され、

Prefix(接頭辞) HTTPメソッド URI コントローラー#アクション
users GET /users(.:format) users#index
users POST /users(.:format) users#create
new_user GET /users/new(.:format) users#new
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
user PATCH / PUT /users/:id(.:format) users#update
user DELETE /users/:id(.:format) users#destroy

となる。 この時、対応するコントローラーは、同名のUserController(users_controller.rb)になる。

非リソースフルルート

resourcesまたはresourceを使用しないルート。

ルーティング動作の点で、リソースフルルートと違いはない。 (というか、リソースフルルートも、実際に動作するルートは、非リソースフルルートと同じ形式)

HTTPメソッド 'URIパターン', to: 'コントローラー#アクション'

とroutes.rbに記述して設定する。

# 記述例
get '/login', to: 'authentications#new'

また、URIで指示されたパス名がコントローラーとアクションに相当しているとき、コントローラーとアクションの指定を省略できる。

get 'users/login', to: 'users#login'

は、

get 'users/login'

でok!

ルートの確認の仕方

$ rails routes