Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

RubyOnRails: url_for application root

i know that doing

url_for(:only_path => false, :controller => 'home')

I will get, for example, http://localhost/home

But how do i handle to genereate http://localhost

like image 429
bonfo Avatar asked Oct 07 '10 15:10

bonfo


3 Answers

This is an old question, but it still ranks high in searches. Currently, use root_url.

e.g.

<%= link_to "fully qualified root", root_url %>

will generate

<a href="http://www.example.com/">fully qualified root</a>
like image 136
metkat Avatar answered Oct 18 '22 19:10

metkat


to get http://localhost, you'll simply:

<%= link_to "Home", root_path %>

That'll generate: <a href="/">Home</a> which will effectively link to http://localhost

like image 12
Jesse Wolgamott Avatar answered Oct 18 '22 18:10

Jesse Wolgamott


Depending on what your goals are, there are a few ways to use the server name or base URL. For the general case of, "I just need a reliable base URL that I can use anywhere," I use the config method.

# via routes.rb
map.root :controller => "foo", :action => "bar"
# view/controller:
root_url # inflexible. root_url will only ever be one URL

# via request object
url_for("http://"+request.host) # not available in models

# via config file (see railscast 85)
# environment.rb
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")[RAILS_ENV]
# config/config.yml
development:
  server_name: localhost:3000
production: 
  server_name: foo.com
# view/controller:
url_for(APP_CONFIG('server_name'))
like image 11
Eric Avatar answered Oct 18 '22 20:10

Eric