method

url_for

url_for(options = {}, *parameters_for_method_reference)
public

Returns the URL for the set of options provided. This takes the same options as url_for. For a list, see the url_for documentation in ActionController::Base. Note that it’ll set :only_path => true so you’ll get /controller/action instead of the http://example.com/controller/action part (makes it harder to parse httpd log files)

3Notes

Use the current URL, with changes

foliosus · Mar 20, 20099 thanks

You can use the current URL, whatever it is, with changes, as in:

# Create a link to the current page in RSS form
url_for(:overwrite_params => {:format => :rss})

This can be super-helpful because it preserves any GET params (like search parameters)

Using namespaces

javiervidal · Mar 3, 20118 thanks

If you are using a namespace in your routes.rb, for example:

namespace :admin do
resources :products
end

then you can:

url_for([:admin, @product])

and:

url_for([:edit, :admin, @product])

Specify :host option in emails

tomharrisonjr · Aug 24, 2012

Emails need a fully qualified URL (with domain). Use the +:host+ parameter.

But note also that you need to specify a value that is not dependent upon the request context. http://api.rubyonrails.org/classes/ActionMailer/Base.html recommends setting a default host in +application.rb+ For those of us who have development, test, staging and production environments, set in the environment-specific files, or in the +:default+ hash in the mailer.

This applies to both +url_for(:host => "example.com")+ and when using named routes as in +widgets_url(:host => "example.com")+