1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Ruby on Railsのルーティング設定に関するいくつかのアドバイス

2022-02-03 14:58:41

RESTfulリソースに1つ以上のアクションを追加する必要がある場合(本当に必要ですか?)、メンバールーティングとコレクションルーティングを使用します。

  # poor
  get 'subscriptions/:id/unsubscribe'
  resources :subscriptions

  # good
  resources :subscriptions do
   get 'unsubscribe', on: :member
  end

  # poor
  get 'photos/search'
  resources :photos

  # good
  resources :photos do
   get 'search', on: :collection
  end



    複数のメンバー/コレクションルートを定義する必要がある場合は、代替のブロック構文を使用します。

 resources :subscriptions do
   member do
    get 'unsubscribe'
    # more routes
   end
  end

  resources :photos do
   collection do
    get 'search'
    # more routes
   end
  end



    ActiveRecordモデルとの関係をよりよく表現するために、ネストされたルートを使用します。

 class Post < ActiveRecord::Base
   has_many :comments
  end

  class Comments < ActiveRecord::Base
   belongs_to :post
  end

  # routes.rb
  resources :posts do
   resources :comments
  end



    ネームスペース・ルーティングを使用して、関連するビヘイビアをグループ化します。

  namespace :admin do
   # Directs /admin/products/* to Admin::ProductsController
   # (app/controllers/admin/products_controller.rb)
   resources :products
  end



    コントローラでレガシーワイルドコントローラルートを使用しないでください。このルーティングは、各コントローラのアクションを GET リクエストでアクセスできるようにします。

  # Very poor
  match ':controller(/:action(/:id(. :format)))'