В 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]