instance method
url_for
Ruby on Rails 8.1.3.1
Since v3.0.20Signature
url_for(options = nil)
Generate a URL based on the options provided, default_url_options, and the routes defined in config/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 targeted at. If:only_pathis false, this option must be provided either explicitly, or viadefault_url_options. -
:subdomain- Specifies the subdomain of the link, using thetld_lengthto split the subdomain from the host. If false, removes all subdomains from the host part of the link. -
:domain- Specifies the domain of the link, using thetld_lengthto split the domain from the host. -
:tld_length- Number of labels the TLD id composed of, only used if:subdomainor:domainare supplied. Defaults toActionDispatch::Http::URL.tld_length, which in turn defaults to 1. -
:port- Optionally specify the port to connect to. -
:anchor- An anchor name to be appended to the path. -
:params- The query parameters to be appended to the path. -
:path_params- The query parameters that will only be used for the named dynamic segments of path. If unused, they will be discarded. -
:trailing_slash- If true, adds a trailing slash, as in"/archive/2009/". -
:script_name- Specifies application path relative to domain root. If provided, prepends application path.
Any other key (:controller, :action, etc.) given to url_for is forwarded to the Routes module.
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'
url_for controller: 'tasks', action: 'testing', host: 'somehost.org', script_name: "/myapp"
# => 'http://somehost.org/myapp/tasks/testing'
url_for controller: 'tasks', action: 'testing', host: 'somehost.org', script_name: "/myapp", only_path: true
# => '/myapp/tasks/testing'
Missing routes keys may be filled in from the current request’s parameters (e.g. :controller, :action, :id, and any other parameters that are placed in the path). Given that the current action has been reached through GET /users/1:
url_for(only_path: true) # => '/users/1'
url_for(only_path: true, action: 'edit') # => '/users/1/edit'
url_for(only_path: true, action: 'edit', id: 2) # => '/users/2/edit'
Notice that no :id parameter was provided to the first url_for call and the helper used the one from the route’s path. Any path parameter implicitly used by url_for can always be overwritten like shown on the last url_for calls.
Parameters
-
optionsopt = nil
Source
# File actionpack/lib/action_dispatch/routing/url_for.rb, line 178
def url_for(options = nil)
full_url_for(options)
end
Defined in actionpack/lib/action_dispatch/routing/url_for.rb line 178
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionDispatch::Routing::UrlFor