method
recognize_path
v3.1.0 -
Show latest stable
- Class:
ActionDispatch::Routing::RouteSet
recognize_path(path, environment = {})public
No documentation available.
# File actionpack/lib/action_dispatch/routing/route_set.rb, line 534
def recognize_path(path, environment = {})
method = (environment[:method] || "GET").to_s.upcase
path = Rack::Mount::Utils.normalize_path(path) unless path =~ %{://}
begin
env = Rack::MockRequest.env_for(path, {:method => method})
rescue URI::InvalidURIError => e
raise ActionController::RoutingError, e.message
end
req = @request_class.new(env)
@set.recognize(req) do |route, matches, params|
params.each do |key, value|
if value.is_a?(String)
value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware?
params[key] = URI.parser.unescape(value)
end
end
dispatcher = route.app
while dispatcher.is_a?(Mapper::Constraints) && dispatcher.matches?(env) do
dispatcher = dispatcher.app
end
if dispatcher.is_a?(Dispatcher) && dispatcher.controller(params, false)
dispatcher.prepare_params!(params)
return params
end
end
raise ActionController::RoutingError, "No route matches #{path.inspect}"
end 1Note
Usage
In Rails 3.X console:
Rails.application.routes.recognize_path('/my_path')