rails获取app root / base url

时间:2014-01-23 23:44:34

标签: ruby-on-rails ruby-on-rails-3 rails-routing url-for

在我的应用程序中,我有一些API在api域下。现在在其中一个API中我想生成一个指向主域的URL,比如说

test.com/blabla...

我尝试使用 url_for ,但似乎默认 root_url request.host 位于api域中。 Url_for将成为

api.test.com/blabla..

虽然我希望它是

test.com/blabla...

Url_for可以带参数

host: ...

将其设置为test.com/,问题是如何获取主机的root / base url(test.com)? root_url request.host 都是api.test.com。

有什么想法吗?感谢。

4 个答案:

答案 0 :(得分:49)

这对其他人有用,我今天遇到了这个

request.base_url

提供本地和现场的完整路径。

request.domain

只提供域名,因此在重定向时有时会破坏链接

答案 1 :(得分:24)

根据this,你可以request.domain

答案 2 :(得分:10)

最简单的替代方法:

包含在你的课程中

include Rails.application.routes.url_helpers

创建函数或只使用root_url获取app root / base url:

  def add_host_prefix(url)
    URI.join(root_url, url).to_s
  end

最后:添加

Rails.application.routes.default_url_options[:host] = 'localhost:3000'

在:

Your_project_root_deir/config/environments/development.rb

虽然帮助程序只能在视图中访问,但这是有效的解决方案。

答案 3 :(得分:-1)

请求.domain在CF上失败,因为域名网址不是基本网址