2010-10-07 15 views

Odpowiedz

11

W zależności od celów, istnieje kilka sposobów użycia nazwy serwera lub podstawowego adresu URL. W ogólnym przypadku: "Potrzebuję tylko niezawodnego podstawowego adresu URL, którego mogę użyć w dowolnym miejscu", używam metody konfiguracji.

# 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')) 
12

dostać http://localhost, będziesz po prostu:

<%= link_to "Home", root_path %> 

To będzie generować: <a href="/">Home</a> które skutecznie odwołuje się do http://localhost

+0

być jasne, mapy root_path na "/", a mapy do absolutnego głównego root_url URL (na przykład "http: // localhost: 3000 /") – user456584

2

Można również użyć: ActionController :: Base. relative_url_root

czyli #{ActionController::Base.relative_url_root}/images/my_img.jpg

8

To stare pytanie, ale wciąż zajmuje wysokie pozycje w wyszukiwaniach. Obecnie użyj root_url.

np.

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

generuje

<a href="http://www.example.com/">fully qualified root</a> 
Powiązane problemy