ネストされたリソースで浅いルートを定期的に使用しているため、単純なものを見落としていると思いましたが、なぜルーティングエラーが発生するのかわかりません。students#show
Courses と Students という 2 つのネストされたリソースを持つ School があります。すべてのアクションはコースで機能します。:index、:new、および :create アクションは、生徒に対して機能します。
に示され/students/3
ているようにルーティングされるのではなく、ルーティング エラーが発生するのはなぜですか?students#show
rake routes
の例外/students/3
:
Routing Error
No route matches {:controller=>"students"}
Try running rake routes for more information on available routes.
関連するビットは次のとおりです...
rake ルートの出力:
...
school_students GET /schools/:school_id/students(.:format) students#index
POST /schools/:school_id/students(.:format) students#create
new_school_student GET /schools/:school_id/students/new(.:format) students#new
edit_student GET /students/:id/edit(.:format) students#edit
student GET /students/:id(.:format) students#show
PUT /students/:id(.:format) students#update
DELETE /students/:id(.:format) students#destroy
approve_course GET /courses/:id/approve(.:format) courses#approve
publish_course GET /courses/:id/publish(.:format) courses#publish
school_courses GET /schools/:school_id/courses(.:format) courses#index
POST /schools/:school_id/courses(.:format) courses#create
new_school_course GET /schools/:school_id/courses/new(.:format) courses#new
edit_course GET /courses/:id/edit(.:format) courses#edit
course GET /courses/:id(.:format) courses#show
PUT /courses/:id(.:format) courses#update
DELETE /courses/:id(.:format) courses#destroy
schools GET /schools(.:format) schools#index
POST /schools(.:format) schools#create
new_school GET /schools/new(.:format) schools#new
edit_school GET /schools/:id/edit(.:format) schools#edit
school GET /schools/:id(.:format) schools#show
PUT /schools/:id(.:format) schools#update
DELETE /schools/:id(.:format) schools#destroy
...
ルート.rb
Lms::Application.routes.draw do
...
resources :schools, :shallow => true do
resources :students
resources :courses do # Courses still work if I remove this block.
member do
get 'approve'
get 'publish'
end
end
end
...
コントローラーとビュー
調べてみましたが、これはルーティング例外なので、このコードには達していないと思います。違うと言ってくれれば、追加できます。
ライブラリ
authlogicでcancanを使用していますが、これらからルーティング エラーが発生したことはありません。