aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/url_for.rb
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-07-18 19:49:51 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-09-03 22:59:07 +0200
commit6c95e0f879aafa5921cd7898d5951b9a926d3c9a (patch)
treed327320b3349b8a3359ca7c16e92f72fce2a92a6 /actionpack/lib/action_dispatch/routing/url_for.rb
parente9791bec823e42372eca095b946c93c1712a0613 (diff)
downloadrails-6c95e0f879aafa5921cd7898d5951b9a926d3c9a.tar.gz
rails-6c95e0f879aafa5921cd7898d5951b9a926d3c9a.tar.bz2
rails-6c95e0f879aafa5921cd7898d5951b9a926d3c9a.zip
Add mounted_helpers to routes
mounted_helpers are a bit similar to url_helpers. They're automatically included in controllers for Rails.application and each of mounted Engines. Mounted helper allows to call url_for and named helpers for given application. Given Blog::Engine mounted as blog_engine, there are 2 helpers defined: app and blog_engine. You can call routes for app and engine using those helpers: app.root_url app.url_for(:controller => "foo") blog_engine.posts_path blog_engine.url_for(@post)
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/url_for.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/url_for.rb28
1 files changed, 7 insertions, 21 deletions
diff --git a/actionpack/lib/action_dispatch/routing/url_for.rb b/actionpack/lib/action_dispatch/routing/url_for.rb
index 30b456f3df..19db730b6a 100644
--- a/actionpack/lib/action_dispatch/routing/url_for.rb
+++ b/actionpack/lib/action_dispatch/routing/url_for.rb
@@ -123,28 +123,14 @@ module ActionDispatch
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :anchor => 'ok', :only_path => true # => '/tasks/testing#ok'
# url_for :controller => 'tasks', :action => 'testing', :trailing_slash=>true # => 'http://somehost.org/tasks/testing/'
# url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
- def url_for(options = nil, *args)
- if options.respond_to?(:routes)
- _with_routes(options.routes) do
- if args.first.is_a? Symbol
- named_route = args.shift
- url_for _routes.url_helpers.send("hash_for_#{named_route}", *args)
- else
- url_for(*args)
- end
- end
+ def url_for(options = nil)
+ case options
+ when String
+ options
+ when nil, Hash
+ _routes.url_for((options || {}).reverse_merge!(url_options).symbolize_keys)
else
- case options
- when String
- options
- when nil, Hash
- routes = (options ? options.delete(:routes) : nil) || _routes
- _with_routes(routes) do
- routes.url_for((options || {}).reverse_merge!(url_options).symbolize_keys)
- end
- else
- polymorphic_url(options)
- end
+ polymorphic_url(options)
end
end