ルーティング 概要
ルーティングはユーザー(クライアント)からリクエストされたurlとそれに対応するコントローラー内のアクションを紐付けるための役割を持っており、これはroutes.rb内に記述されている。
以下、Rails Tutorialで作成したルーティング。
Rails.application.routes.draw do
root 'static_pages#home'
get 'static_pages/help' , to: "static_pages#help" , as: "help"
get 'static_pages/about' , to: "static_pages#about" , as: "about"
get 'static_pages/contact' , to: "static_pages#contact" , as: "contact"
get '/signup' , to: "users#new"
post '/signup', to:"users#create"
resources :users
get '/login', to:"session#new"
post '/login', to:"session#create"
delete '/logout', to:"session#destroy"
resources :microposts, only: [:create, :destroy]
end
HTTPメソッド
GET,POST,PATCH,DELETEがあり、アクションからmodelに対して行う操作に対して使い分ける。以下の表にHTTPメソッドに対応するREST Operation(アクションからmodelを読み取る操作)をする際に定義するアクション名の参考例を示す。
HTTPメソッド | REST Operation | 対応するアクション名 | ユーザが行う動作 |
---|---|---|---|
GET | READ | 制限なし(newなど) | 閲覧 |
POST | CREATE | create | 登録 |
PATCH | UPDATE | update | 更新 |
DELETE | DESTROY | destroy | 削除 |
###REST fullなルール
RESTはAPIを設計する際の設計の原則を示しているものであり、Rails TutorialでREST fullなルールというものが記述されている。
ルーティングに記述するurlとアクション名は自由に開発者が決めることができるが、コードは他の人にも分かりやすく明瞭に記述する必要があるため、一定のルールが決められている。ここでのルールはHTTPメソッドとそれに対応するアクション名のルールである。
このREST op.はCreate(作成),Read(読み取り),Update(更新),Delete(削除)の頭文字をとってCRUDととも呼ばれる。
resourcesヘルパー
resourcesヘルパーはroutes.rb中で使用されるヘルパーで、resourcesでコントローラー名を定義すると自動でurlを生成してくれるメソッド。以下、実際の使用例とそれに対応するurlを示す。
Rails.application.routes.draw do
resources :users
end
Prefix Verb URI Pattern Controller#Action
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
このようにコントローラー内で自動でHTTPメソッド全種類を生成してくれる。
prefix
rake routes
$ rake routes
Prefix Verb URI Pattern Controller#Action
root GET / static_pages#home
help GET /static_pages/help(.:format) static_pages#help
about GET /static_pages/about(.:format) static_pages#about
contact GET /static_pages/contact(.:format) static_pages#contact
signup GET /signup(.:format) users#new
POST /signup(.:format) users#create
users GET /users(.:format) users#index
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
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
DELETE /users/:id(.:format) users#destroy
login GET /login(.:format) session#new
POST /login(.:format) session#create
logout DELETE /logout(.:format) session#destroy
microposts POST /microposts(.:format) microposts#create
micropost DELETE /microposts/:id(.:format) microposts#destroy
$ rake routes
のコマンドをターミナルで実行することで上記実行画面のようにurlとそれに対応するアクション名を参照することができる。
prefix
rake routesで出力したprefixの名称に_pathか_urlを付けることでリンク先として使用することができる。以下に使用例を示す。
<%= link_to "HELP", help_path %>
pathをprefixに付した場合は相対参照で、rootパスを基準とする。
help_pathには'/static_pages/help'が割り当てられ、help_urlには'https://・・・・/static_pages/help'が割り当てられる。