Ответ 1
В соответствии с этим вы можете сделать request.domain
В моем приложении у меня есть несколько 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/, вопрос в том, как я могу получить корневой/базовый url (test.com) для хоста? root_url или request.host - все api.test.com.
Любые идеи? Спасибо.
В соответствии с этим вы можете сделать request.domain
Просто, чтобы это было полезно кому-то другому, я наткнулся на это сегодня
request.base_url
дает полный путь как в локальном, так и в реальном времени.
request.domain
дает только имя домена, так что иногда он иногда нарушает связь при перенаправлении
Самый простой альтернативный метод:
включить в класс
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
хотя помощники могут быть доступны только в представлениях, но это рабочее решение.
request.domain терпит неудачу на CF, он задает домен url not base url