Ответ 1
чтобы получить http://localhost, вы просто:
<%= link_to "Home", root_path %>
Это создаст: <a href="/">Home</a>
, который будет эффективно связываться с http://localhost
Я знаю, что делать
url_for(:only_path => false, :controller => 'home')
Я получу, например, http://localhost/home
Но как мне обрабатывать genereate http://localhost
чтобы получить http://localhost, вы просто:
<%= link_to "Home", root_path %>
Это создаст: <a href="/">Home</a>
, который будет эффективно связываться с http://localhost
В зависимости от ваших целей существует несколько способов использования имени сервера или базового URL-адреса. Для общего случая: "Мне просто нужен надежный базовый URL-адрес, который я могу использовать в любом месте", я использую метод config.
# 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'))
Это старый вопрос, но он по-прежнему занимает высокое место в поиске. В настоящее время используйте root_url.
например.
<%= link_to "fully qualified root", root_url %>
будет генерировать
<a href="http://www.example.com/">fully qualified root</a>
Вы также можете использовать: ActionController:: Base.relative_url_root
то есть. #{ActionController::Base.relative_url_root}/images/my_img.jpg