Отсутствует хост для ссылки на! Пожалуйста, укажите: параметр хоста или установите default_url_options [: хост] - PullRequest
163 голосов
/ 28 августа 2011

Я гуглял уже около 90 минут и до сих пор не могу ответить на этот вопрос.Где я могу установить default_url_options?Я уже установил его на config.action_mailer.default_url_options для решения этой же ошибки в другом месте, но теперь я получаю эту ошибку, когда пытаюсь использовать URL-помощник в спецификации RSpec.Я понятия не имею, где он ожидает установки default_url_options.

 Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/)
 RuntimeError:
   Missing host to link to! Please provide :host parameter or set default_url_options[:host]
 # ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>'

Этот код не имеет ничего общего с электронной почтой / ActionMailer, просто ему нужен URL вместо пути.

Есть идеи?

Ответы [ 12 ]

1 голос
/ 25 июня 2015

У меня была такая же ошибка. У меня все написано правильно, включая Листинг 10.13 из учебника.

Rails.application.configure do
.
.
.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delevery_method :test
host = 'example.com'
config.action_mailer.default_url_options = { host: host }
.
.
.
end

очевидно с "example.com", замененным на URL моего сервера.

То, что я затушевал в уроке, было этой строкой:

После перезапуска сервера разработки для активации конфигурации ...

Так что ответом для меня было выключить и снова включить сервер.

0 голосов
/ 04 февраля 2015

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

Вы должны установить default_url в каждой среде (разработка, тестирование, производство).

Вам необходимо внести эти изменения.

    config/environments/development.rb
     config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'

 config/environments/test.rb
      config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'

  config/environments/development.rb
     config.action_mailer.default_url_options = 
      { :host => 'your-host-name' }  #if it is local then 'localhost:3000'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...