web-dev-qa-db-ja.com

カスタムルートをRailsアプリに追加する

the Rails Guides について読みました。

私が設定したいのは、「プロファイル」コントローラにルーティングされる次のルートです。

GET profiles/charities-すべての慈善団体を表示する必要があります
GET profiles/charties/:id特定の慈善団体を表示する必要があります
GET profiles/donors-すべてのドナーを表示する必要があります
GET profiles/donors/:id-特定のドナーを表示する必要があります

プロファイルコントローラーと、慈善団体と寄付者という2つの方法を作成しました。

これで十分ですか?

12

以下は、必要なルートを設定しますが、CharitiesControllerおよびDonorsController:indexおよび:showにマップします。

namespace :profiles do
  # Actions: charities#index and charities#show
  resources :charities, :only => [:index, :show]

  # Actions: donors#index and donors#show
  resources :donors, :only => [:index, :show]
end

カスタムルートを設定する方が適切な場合は、次のようにします。

get 'profiles/charities', :to => 'profiles#charities_index'
get 'profiles/charities/:id', :to => 'profiles#charities_show'
get 'profiles/donors', :to => 'profiles#donor_index'
get 'profiles/donors/:id', :to => 'profiles#donor_show'

以下は、ガイド内の関連セクションです。

  1. Resource Routing:the Rails Default-Controller Namespaces and Routing
  2. 非リソースフルルート-ネーミングルート
19
kristinalim

慈善団体と寄付者は入れ子になったリソースのようです。もしそうなら、あなたのconfig/routes.rbファイルには次のようなものが必要です:

resources :profiles do
  resources :charities
  resources :donors
end

これらはネストされたリソースであるため、プロファイルコントローラーにcharitiesとドナーという2つのメソッドは必要ありません。実際、アプリによっては、慈善団体と寄付者に個別のコントローラーやモデルが必要になる場合があります。

2
Chris Jeon