This project is archived and is in readonly mode.
Not routing to correct non-default controller
Reported by mikemaltese | March 18th, 2011 @ 09:04 PM
My config/routes.rb contains this:
resources :front_page, :only => [:new, :create], :controller => "articles/front_page_articles"
However, the path /articles/:id/front_page_articles/new is routed to FrontPageArticlesController, not Articles::FrontPageArticlesController as I expect. Running rake routes agrees with me that it should route to the latter.
Comments and changes to this ticket
-
Andrew White March 19th, 2011 @ 05:38 AM
- State changed from new to needs-more-info
- Importance changed from to Low
Need a bit more of your routes.rb file to see what's happening - to get the '/articles/:id' part of the path the resources call needs to be wrapped with something, e.g:
resources :articles do member do resources :front_page_articles, :only => [:new, :create], :controller => 'articles/front_page_articles' end end
Firstly the 'member' should be 'nested' - member is for specifying actions on the current resource not defining nested resources. If you'd used nested the path would be '/articles/:article_id', however this is irrelevant because it still works anyway. Using the above routes in a test application (Rails 3.0.5) this is what I get:
$ curl http://127.0.0.1:3000/articles/1/front_page_articles/new {"action"=>"new", "id"=>"1", "controller"=>"articles/front_page_articles"}
The only way I can reproduce your problem is if a controller exists at app/controllers/front_page_articles_controller.rb and not at app/controllers/articles/front_page_articles_controller.rb. Because of how AS::Dependencies works it will find a constant in the global namespace if one in the Articles namespace doesn't exist or the Articles namespace doesn't exist. Check you haven't got a typo in a path somewhere - that's probably the cause of the problem.
-
mikemaltese March 27th, 2011 @ 06:06 PM
Hi Andrew,
I've already moved past this issue by renaming some controllers, so my routes.rb file would be of no help. From what I remember, however, I did have controllers with the same name defined in the root scope and in the 'articles' scope, and it was routing to the root one when it shouldn't have.
-
Andrew White March 27th, 2011 @ 06:12 PM
- State changed from needs-more-info to invalid
Okay, thanks for the update.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>