diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2010-08-25 13:41:56 +0200 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2010-09-03 22:59:13 +0200 |
commit | b1c66f060bba22d16abf6d24d3df762c240e367c (patch) | |
tree | 351e92d8bd64d18aee417c19a48bd55c36dbbe1c /actionpack/lib/action_dispatch/routing/routes_proxy.rb | |
parent | e35c2043b135a95104e3eeb3e12cbcde541fa1b4 (diff) | |
download | rails-b1c66f060bba22d16abf6d24d3df762c240e367c.tar.gz rails-b1c66f060bba22d16abf6d24d3df762c240e367c.tar.bz2 rails-b1c66f060bba22d16abf6d24d3df762c240e367c.zip |
Move RoutesProxy to separate file
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/routes_proxy.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/routes_proxy.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/routing/routes_proxy.rb b/actionpack/lib/action_dispatch/routing/routes_proxy.rb new file mode 100644 index 0000000000..f7d5f6397d --- /dev/null +++ b/actionpack/lib/action_dispatch/routing/routes_proxy.rb @@ -0,0 +1,35 @@ +module ActionDispatch + module Routing + class RoutesProxy #:nodoc: + include ActionDispatch::Routing::UrlFor + + attr_accessor :scope, :routes + alias :_routes :routes + + def initialize(routes, scope) + @routes, @scope = routes, scope + end + + def url_options + scope.send(:_with_routes, routes) do + scope.url_options + end + end + + def method_missing(method, *args) + if routes.url_helpers.respond_to?(method) + self.class.class_eval <<-RUBY, __FILE__, __LINE__ + 1 + def #{method}(*args) + options = args.extract_options! + args << url_options.merge((options || {}).symbolize_keys) + routes.url_helpers.#{method}(*args) + end + RUBY + send(method, *args) + else + super + end + end + end + end +end |