2016-03-27 9 views
1

私のアプリケーションでは、私は助成金を持っていて、URLはroot/grantts/grant_idの代わりにroot/grant_idにします。私は私のルートルートの順序は、どのコントローラにアクセスするのに影響しますか?

私はエラー「グラントが見つかりませんでした」を取得 resources :grants, :path => '' doライン以下 resources :matchesを入れ
Rails.application.routes.draw do 
    ... 
    root     'static_pages#welcome' 
    # get  'home'  => 'static_pages#home' 
    get  'about'  => 'static_pages#about' 
    get  'faq'  => 'static_pages#faq' 
    get  'signup' => 'users#new' 
    get  'login'  => 'sessions#new' 
    post 'login'  => 'sessions#create' 
    delete 'logout' => 'sessions#destroy' 
    get  'dashboard' => 'dashboard#index' 


    resources :users do 
    resources :projects 
     member do 
     get 'access_granted' 
     put 'access_granted' 
     get 'remove_access' 
     put 'remove_access' 
     end 
    end 


    resources :profiles 
    resources :account_activations, only: [:edit] 
    resources :password_resets, only: [:new, :create, :edit, :update] 
    resource :request_access, only: [:show, :new, :create] 

resources :grants, :path => '' do 
    resources :app_types do 
     resources :submissions 
    end 
    end 
    get  'grants' => 'grants#index' 

    resources :matches 

end 

でこれを持って、私はそのリクエストパラメータが{「コントローラ」=>「助成金」 ている参照してください。 "action" => "show"、 "id" => "matches"}。私がresources :matchesを許可ラインの上に置くと、すべて正常に動作します。権限付与ルートの中の何かが閉じるのではなく、その下にあるすべての行に強制的なコントローラを探すよう強制されています。単純な解決策は、その行の上にあるすべてのものを保持することですが、なぜこれが起こっているのか理解しようとしています。

grants GET /    grants#index 
     GET /grants(.:format) grants#index 

ので、2つの質問 1は、次のとおりです:パス=>「」正しい方法に

はまた、私は補助金として交付#インデックスを定義していても、私はルートを熊手とき、私が見ていることに気づきました助成金/ URLの一部を削除してください。
2.グラントのルートの下のすべてがグラントのコントローラに送信されるのはなぜですか?ドキュメントから

答えて

2

:あなたはリソースを持っているので、もし

Railsのルートが、それらが指定された順序に一致している:リソースラインのためのGET「写真/世論調査」上の写真showアクションのルートがしますget行の前に一致させる。これを修正するには、取得行をリソース行の上に移動して、最初に一致させます。

したがって、問題は、 ""へのマッチンググラントがグラントのINDEXルートが/で、グラントのSHOWルートが/:grant_idであることを意味します。あなたがこの種のルート(私が唱えている)を持っていたいなら、ルートファイルの一番下になければなりません。

ここでルーティングについて詳しく読むことができます。http://guides.rubyonrails.org/routing.html

関連する問題