Incorrect path generation if some controller actions are under path prefix: expected behavior or bu

Imagine I have a simple scaffolded model Order, controller
OrderControllers with all the default views etc.

Then I modify routes to have all actions except index and show be
available under /admin subdirectory:

resources :orders, :only => [:index, :show]
scope ‘/admin’ do
resources :orders, :except => [:index, :show]
end

And after that on my index and show pages the following helper

link_to ‘Show’, @order
or
link_to ‘Show’, order

generate links that look like: ‘http://localhost:3000/admin/orders/1
which is obviously incorrect and leads to Routing Error.

I know how to work around this (I’m using link_to ‘Show’, {action =>
‘show’, :id => @order}) just wondering this is expected behavior for
some reason or a bug?

Oh, I found the reason.

When routes are defined and helpers are generated in the
‘define_hash_access’ method, the hash access function is named the
same for show and update actions: hash_for_order_path. So the update
action’s path helper overwrites the show’s one.

I still wonder if it is a bug or a feature…

I can assume it may not RESTful what I did - routing show and update
to different URLs. Maybe according to REST is expected to be GET and
PUT to the same url.

But if specifying {action => ‘show’, :id => @order} produces correct
path, then it seems it is not prohibited to route show and update to
different urls.

Vitalii