Forum: Ruby on Rails Resources, Modules, and Nesting (URL Helper errors)

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
stephanie (Guest)
on 2007-03-23 02:12
(Received via mailing list)

I am trying to create REST routes non-standard setup. The rest url
helpers give an error when I try to use a module controller for a
nested resource.

map.resources :bar, :controller => 'module/bar'

map.resources :foos do |foo|
    foo.resources :bar

Doesn't work (url helpers broken)
map.resources :foos do |foo|
    foo.resources :bar, :controller => 'module/bar'

The URL helper error is...
ActionView::TemplateError (bar_url failed to generate from
{:action=>"index", :controller=>"module/bar", :foo_id=>"1"}, expected:
{:action=>"index", :controller=>"module/bar"}, diff: {:foo_id=>"1"})

Anybody have any suggestions on what is wrong? Is it just a limitation
or feature of rest routes?

Trevor S. (Guest)
on 2007-03-23 02:52
(Received via mailing list)

could be a pluralization issue:

map.resources :foos do |foo|
   map.resources :bars, :controller => 'module/bar'

note I said :bars not :bar

stephanie (Guest)
on 2007-03-23 03:08
(Received via mailing list)
Hi Trever,

Thanks for the reply. Sorry for the typo. My email should say bars (a
typo in translation to a question).

map.resources :bars, :controller => 'module/bars

My code actually did have the right pluralization. I copied the code
out of the nesting and tested it unnested. All of the helpers worked
with a module resource it isn't nested.


Trevor S. (Guest)
on 2007-03-23 03:45
(Received via mailing list)
Hey Stephanie,


to be honest I'm not even trying it out with a controller inside a
module because the error you're getting seems to be coming from the
url_helpers, which don't care about controllers as such.

So, at the risk of sending you on a wild goose chase, I'll make a guess:

I'm betting you've got "map.resources :bars" in more than one place
in your routes.rb - am I right?

stephanie (Guest)
on 2007-03-23 04:53
(Received via mailing list)
Thanks for trying to track this down. I have no other references
to :bars in the routes. I also do not have /:controller/:action/:id as
a route.

However, in my controllers folder I do have a

app/controllers/foo/bars_controller.rb (this is subclassed from

Could this be causing the problem?

stephanie (Guest)
on 2007-03-23 05:05
(Received via mailing list)
I tried changing the super controller to another name. That way the
only bars controller would be foo/bars_controller.rb. This still gave
me the same URL helper problems as described above.

I am back to suspecting is modules + nested resources is the

Trevor S. (Guest)
on 2007-03-23 07:36
(Received via mailing list)

I'm confident that the names of your controllers isn't the source of
the problem - I can use utterly bogus controller names (and modules)
in map.resources calls and it has no effect on url helpers.

Is this something as simple as that you're not actually passing all
the required information to the url helpers for your nested
resource?  As in:

bar_url('a_foo', 'a_bar') #=> http//

Shafeer (Guest)
on 2007-03-30 15:34
Hi Stephanie,

Have found a solution to your problem? I have the same problem as well.
My routing looks as follows;

map.resources :pictures, :controller => 'user_pictures', :path_prefix =>
'/:user_uid', :name_prefix => 'user_', :requirements => { :user_uid =>
/shafeer/ } do |picture|
    picture.resources :exhibitions, :controller =>
'picture_exhibitions', :name_prefix => 'user_picture_'

and then;

map.resource :myapp, :controller => 'myapp/index' do |myapp|
    myapp.resources :pictures, :controller => 'myapp/pictures',
:name_prefix => 'myapp_' do |picture|
      picture.resources :exhibitions, :controller =>
'myapp/picture_exhibitions', :name_prefix => 'myapp_picture_'

The helper method myapp_pictures_path produces the right path #=>

But the problem I have is with the controller, the routing chooses the
wrong controller, that is, /app/controllers/user_pictures_controller.rb
instead of

Any idea why is that?

Thanks and Regards,
This topic is locked and can not be replied to.