RubyOnRails:url_for应用程序根目录

bon*_*nfo 15 ruby-on-rails

我知道这样做

url_for(:only_path => false, :controller => 'home')
Run Code Online (Sandbox Code Playgroud)

我会得到,例如,http:// localhost/home

但我如何处理生成http:// localhost

Jes*_*ott 12

获取http:// localhost,你只需:

<%= link_to "Home", root_path %>
Run Code Online (Sandbox Code Playgroud)

这将生成:<a href="/">Home</a>它将有效地链接到http:// localhost

  • 需要明确的是,root_path映射为“ /”,而root_url映射为绝对根URL(例如“ http:// localhost:3000 /”) (2认同)

met*_*kat 12

这是一个老问题,但在搜索中仍然排名很高.目前,使用root_url.

例如

<%= link_to "fully qualified root", root_url %>
Run Code Online (Sandbox Code Playgroud)

会产生

<a href="http://www.example.com/">fully qualified root</a>
Run Code Online (Sandbox Code Playgroud)


Eri*_*ric 11

根据您的目标,有几种方法可以使用服务器名称或基本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'))
Run Code Online (Sandbox Code Playgroud)