| Module | ActionController::UrlWriter |
| In: |
vendor/rails/actionpack/lib/action_controller/url_rewriter.rb
|
Write URLs from arbitrary places in your codebase, such as your mailers.
Example:
class MyMailer
include ActionController::UrlWriter
default_url_options[:host] = 'www.basecamphq.com'
def signup_url(token)
url_for(:controller => 'signup', action => 'index', :token => token)
end
end
In addition to providing url_for, named routes are also accessible after including UrlWriter.
Generate a url based on the options provided, default_url_options and the routes defined in routes.rb. The following options are supported:
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', :host=>'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
# File vendor/rails/actionpack/lib/action_controller/url_rewriter.rb, line 47
47: def url_for(options)
48: options = self.class.default_url_options.merge(options)
49:
50: url = ''
51:
52: unless options.delete :only_path
53: url << (options.delete(:protocol) || 'http')
54: url << '://' unless url.match("://") #dont add separator if its already been specified in :protocol
55:
56: raise "Missing host to link to! Please provide :host parameter or set default_url_options[:host]" unless options[:host]
57:
58: url << options.delete(:host)
59: url << ":#{options.delete(:port)}" if options.key?(:port)
60: else
61: # Delete the unused options to prevent their appearance in the query string
62: [:protocol, :host, :port].each { |k| options.delete k }
63: end
64:
65: anchor = "##{CGI.escape options.delete(:anchor).to_param.to_s}" if options.key?(:anchor)
66: url << Routing::Routes.generate(options, {})
67: url << anchor if anchor
68:
69: return url
70: end