mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
39 lines
995 B
Ruby
39 lines
995 B
Ruby
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 respond_to?(method, include_private = false)
|
|
super || routes.url_helpers.respond_to?(method)
|
|
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
|