RubyOnRails: url_for корень приложения - PullRequest
14 голосов
/ 07 октября 2010

я знаю, что при

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

я получу, например, http://localhost/home

Но как мне справиться с генерацией http://localhost

Ответы [ 4 ]

13 голосов
/ 07 октября 2010

чтобы получить http://localhost, вы просто:

<%= link_to "Home", root_path %>

Это сгенерирует: <a href="/">Home</a>, который будет эффективно ссылаться на http://localhost

11 голосов
/ 16 сентября 2013

Это старый вопрос, но он все еще занимает высокое место в поисках.В настоящее время используйте root_url.

например,

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

сгенерирует

<a href="http://www.example.com/">fully qualified root</a>
11 голосов
/ 07 октября 2010

В зависимости от ваших целей, существует несколько способов использовать имя сервера или базовый 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'))
2 голосов
/ 30 января 2013

Вы также можете использовать: ActionController :: Base.relative_url_root

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...