Hi,
url_for has a nice way of using the current ‘params’ object to fill in
default
parameters in a route. For example,
map.connect ‘:controller/:action/:id/’
with <%= url_for :action => ‘my_action’ %> will redirect to the current
controller. All very good.
However, I sometimes want a url_for() which includes current parameters
which
aren’t in the route, for example I might want a link to preserve
?order=name in
the query string.
I’ve been using url_for(params.merge({:new_param => new_value})), but
there’s a
problem with controllers in modules
params == {:controller => ‘sub/controller’, :action => ‘action’}
url_for params.merge({:new_param => new_value})
==> /sub/sub/controller/action?new_param=new_value
to fix the problem I have to put
params.merge({:controller =>
“/#{params[:controller]}”}).merge({:new_param =>
new_value})
My question is, is there an easier way to do this? And if not, why is
params[:controller] not anchored with a ‘/’ to start with?
Gareth