Подтвердить что ты не робот

Рельсы получают URL-адрес приложения root/base

В моем приложении у меня есть несколько 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.

Любые идеи? Спасибо.

4b9b3361

Ответ 1

В соответствии с этим вы можете сделать request.domain

Ответ 2

Просто, чтобы это было полезно кому-то другому, я наткнулся на это сегодня

request.base_url

дает полный путь как в локальном, так и в реальном времени.

request.domain

дает только имя домена, так что иногда он иногда нарушает связь при перенаправлении

Ответ 3

Самый простой альтернативный метод:

включить в класс

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

хотя помощники могут быть доступны только в представлениях, но это рабочее решение.

Ответ 4

request.domain терпит неудачу на CF, он задает домен url not base url