instance method
url_for
Ruby on Rails 2.2.3
Since v2.2.3 Last seen in v2.3.18Available in: v2.2.3 v2.3.18
Signature
url_for(options)
Generate a url based on the options provided, default_url_options and the routes defined in routes.rb. The following options are supported:
-
:only_path- If true, the relative url is returned. Defaults tofalse. -
:protocol- The protocol to connect to. Defaults to ‘http’. -
:host- Specifies the host the link should be targetted at. If:only_pathis false, this option must be provided either explicitly, or viadefault_url_options. -
:port- Optionally specify the port to connect to. -
:anchor- An anchor name to be appended to the path. -
:skip_relative_url_root- If true, the url is not constructed using therelative_url_rootset in ActionController::Base.relative_url_root. -
:trailing_slash- If true, adds a trailing slash, as in “/archive/2009/”
Any other key (:controller, :action, etc.) given to url_for is forwarded to the Routes module.
Examples:
url_for :controller => 'tasks', :action => 'testing', :host=>'somehost.org', :port=>'8080' # => 'http://somehost.org:8080/tasks/testing' 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'
Parameters
-
optionsreq
Source
# File actionpack/lib/action_controller/url_rewriter.rb, line 129
def url_for(options)
options = self.class.default_url_options.merge(options)
url = ''
unless options.delete(:only_path)
url << (options.delete(:protocol) || 'http')
url << '://' unless url.match("://")
raise "Missing host to link to! Please provide :host parameter or set default_url_options[:host]" unless options[:host]
url << options.delete(:host)
url << ":#{options.delete(:port)}" if options.key?(:port)
else
# Delete the unused options to prevent their appearance in the query string.
[:protocol, :host, :port, :skip_relative_url_root].each { |k| options.delete(k) }
end
trailing_slash = options.delete(:trailing_slash) if options.key?(:trailing_slash)
url << ActionController::Base.relative_url_root.to_s unless options[:skip_relative_url_root]
anchor = "##{CGI.escape options.delete(:anchor).to_param.to_s}" if options[:anchor]
generated = Routing::Routes.generate(options, {})
url << (trailing_slash ? generated.sub(/\?|\z/) { "/" + $& } : generated)
url << anchor if anchor
url
end
Defined in actionpack/lib/action_controller/url_rewriter.rb line 129
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionController::UrlWriter