2.3 その他

リダイレクトを設定する

redirectを設定すると特定ルーティングにリクエストが来た時にリダイレクトさせることができます。 このリダイレクトはHTTPステータスが301になります。

/users/creatorsにリダイレクトさせる

Rails.application.routes.draw do
  get '/users', to: redirect('/creators')
end

パラメータを再利用してリダイレクトさせる

Rails.application.routes.draw do
  get '/users/:id', to: redirect('/creators/%{id}')
end

ワイルドカードを利用する

ルーティングにワイルドカードを利用することで一部をあらゆるパラメータをマッチさせることができます。

chapterワイルドカードを設定

Rails.application.routes.draw do
  get '/books/*chapter', to: 'books#sections'
end

このルーティングではparams[:chapter]はあらゆるものにマッチします。

例)

パス params[:chapter]
/books/how-to-use-bundler 'how-to-use-bundler'

プレフィックスをつける

:asオプションでプレフィックスをつけることができます。

adminスコープ内のpostsリソースにadminプレフィックスを追加

Rails.application.routes.draw do
  scope 'admin', as: 'admin' do
    resources :posts
  end
end

生成されるルーティングは以下になります。

メソッド パス コントローラとアクション ヘルパー
GET /admin/posts posts#index admin_posts_path
GET /admin/posts/new posts#new new_admin_post_path
POST /admin/posts posts#create admin_posts_path
GET /admin/posts/:id posts#show admin_post_path(:id)
GET /admin/posts/:id/edit posts#edit edit_admin_post_path(:id)
PATCH/PUT /admin/posts/:id posts#update admin_post_path(:id)
DELETE /admin/posts/:id posts#destroy admin_post_path(:id)

定義したルーティングを確認する

定義済みルーティング

Rails.application.routes.draw do
  resources :posts do
    resources :comments
  end

  get 'settings', to: 'users#settings'
end

ルーティング一覧を表示するコマンド

$ rails routes

# 結果
Prefix Verb URI Pattern Controller#Action
  post_comments   GET    /posts/:post_id/comments(.:format)          comments#index
                  POST   /posts/:post_id/comments(.:format)          comments#create
new_post_comment  GET    /posts/:post_id/comments/new(.:format)      comments#new
edit_post_comment GET    /posts/:post_id/comments/:id/edit(.:format) comments#edit
   post_comment   GET    /posts/:post_id/comments/:id(.:format)      comments#show
                  PATCH  /posts/:post_id/comments/:id(.:format)      comments#update
                  PUT    /posts/:post_id/comments/:id(.:format)      comments#update
                  DELETE /posts/:post_id/comments/:id(.:format)      comments#destroy
          posts   GET    /posts(.:format)                            posts#index
                  POST   /posts(.:format)                            posts#create
       new_post   GET    /posts/new(.:format)                        posts#new
      edit_post   GET    /posts/:id/edit(.:format)                   posts#edit
           post   GET    /posts/:id(.:format)                        posts#show
                  PATCH  /posts/:id(.:format)                        posts#update
                  PUT    /posts/:id(.:format)                        posts#update
                  DELETE /posts/:id(.:format)                        posts#destroy
       settings   GET    /settings(.:format)                         users#settings

ブラウザでルーティングを確認する

ローカル環境でRailsが動くのであればhttp://localhost:3000/rails/info/routesにアクセスすることで ルーティングを確認することができます。

results matching ""

    No results matching ""