在控制器中,我称之为服务:
MyService.call
在MyService.call
方法中,我想使用网址助手:
Rails.application.routes.url_helpers.something_url
然而,我收到错误:
Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
在config / environments / development.rb中的我有:
config.action_mailer.default_url_options = { host: 'localhost:3000' }
config.action_controller.default_url_options = { host: 'localhost:3000' }
我应该设置什么不得错误?
答案 0 :(得分:10)
您可以将配置文件中的主机设置为:
Rails.application.routes.default_url_options[:host] = 'your_host'
这不仅会为action_mailer
和action_controller
设置默认主机,而且会为使用url_helpers
的任何内容设置默认主机。
答案 1 :(得分:5)
根据this thread,每当使用路线助手时,他们都不会将default_url_options
推迟到ActionMailer
或ActionController
配置,并且预计会有类中的default_url_options
方法。这对我有用:
class MyService
include Rails.application.routes.url_helpers
def call
something_url
end
class << self
def default_url_options
Rails.application.config.action_mailer.default_url_options
end
end
end
请注意,您可以使用action_mailer
或action_controller
配置,具体取决于您配置的内容。