LoginSignup
0
1

More than 3 years have passed since last update.

ルーティング

Posted at

ルーティング 概要

 ルーティングはユーザー(クライアント)からリクエストされたurlとそれに対応するコントローラー内のアクションを紐付けるための役割を持っており、これはroutes.rb内に記述されている。
以下、Rails Tutorialで作成したルーティング。

routes.rb
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を示す。

routes.rb
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を付けることでリンク先として使用することができる。以下に使用例を示す。

home.html.erb

<%= link_to "HELP", help_path %>

 pathをprefixに付した場合は相対参照で、rootパスを基準とする。
help_pathには'/static_pages/help'が割り当てられ、help_urlには'https://・・・・/static_pages/help'が割り当てられる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1