В Rails engine отсутствует ошибка хоста. Где установить этот конфиг?

Скажем, у меня есть Rails Engine под названием seasons, Скажем, в основном приложении я пытаюсь сделать ссылку на URL внутри seasons двигатель. Я пытаюсь сделать это:

seasons.winter_url

но это бросает

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true

Так как я думаю, что у движка нет настроенного хоста. Я могу решить это, сделав это:

seasons.winter_url(host: <something>)

но это безобразно Что я могу сделать?

1 ответ

В основном приложении. Скажите, что ваш двигатель называется foo,

Создайте новый инициализатор. то есть в config/initializers/foo_engine.rb:

Foo::Engine.configure do |config|
  config.routes.default_url_options[:host] = ENV['API_HOST']
end

ENV['API_HOST'] переменная среды

В любом месте в вашем приложении. Вы должны быть в состоянии позвонить url или же path напрямую используя: winter_url или же winter_path (нет необходимости в seasons.winter_url).

Это похоже на проблему разработки Missing host to link to!,

Где ActionMailer запутался в ссылках внутри электронных писем.

Вы пытаетесь отправить электронную почту с драгоценным камнем?

Обычно Rails Engines может разрешать хост из самого Rails.

Однако электронная почта отличается.

Попробуйте установить

config.action_mailer.default_url_options = { :host => "yourhost" }

Если вы не пытаетесь отправлять электронные письма и по-прежнему получаете эту ошибку, попробуйте установить:

Rails.application.routes.default_url_options[:host]

И если это не удается, попробуйте установить:

Seasons.application.routes.default_url_options[:host]
Другие вопросы по тегам