rails中的Helper方法会自动检测应用程序的根URL。例如,user_signup_url
会自动使用mydoimain.com/user_signup
但是,在我的环境/ production.rb中,我必须手动设置我的主机。
config.action_mailer.default_url_options = { :host => 'mydomain.com' }
有没有办法自动设置此设置?或许像下面这样:
config.action_mailer.default_url_options = { :host => ROOT_URL }
谢谢!
答案 0 :(得分:0)
如果我没记错的话,主机会从传入的请求中“猜到”。这就是为什么它可以在您的控制器和视图中访问。但是,邮件程序级别没有请求对象,因此在这种情况下你必须要详细。
答案 1 :(得分:0)
在某个地方设置一个常量,就像你描述的那样。把它放在application.rb
的顶部,或者每个开发环境文件中可能有不同的值?
或者,也许您可以使用在内部声明的特定常量创建一个Constants
类? (您的电话将是Constants::ROOT_URL
。)
或者,在启动Rails之前在shell中设置一个环境变量,并使用ENV['ROOT_URL']
另一个答案提到taht _path
帮助者不需要域名。这是事实 - 但我不确定_url
助手是如何工作的,因为他们应该给你一个完整的URI我认为?您可能想要调查_url
助手的工作方式。