45

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

test.com/blabla...

我尝试使用 url_for但似乎默认的root_urlrequest.host在 api 域中。Url_for 将使它成为

api.test.com/blabla..

虽然我希望它是

test.com/blabla...

Url_for 可以带参数

host: ...

要将其设置为 test.com/,问题是如何获取主机的根/基本 url (test.com)? root_urlrequest.host都是 api.test.com。

有任何想法吗?谢谢。

4

4 回答 4

76

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

request.base_url

在 local 和 live 中给出完整的路径。

request.domain

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

于 2015-03-30T08:40:37.500 回答
29

根据这个你可以做request.domain

于 2014-01-23T23:51:05.723 回答
16

最简单的替代方法:

包括在你的班级

include Rails.application.routes.url_helpers

创建函数或仅用于root_url获取应用程序根/基本 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

尽管只能在视图中访问助手,但这是可行的解决方案。

于 2015-09-21T08:24:02.673 回答
0

request.domain 在 CF 上失败,它给定域 url 而不是基本 url

于 2014-09-23T13:03:20.963 回答