1

rails 中的辅助方法会自动检测应用程序的根 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 }

谢谢!

4

2 回答 2

0

如果我没记错的话,主机是从传入的请求中“猜测”出来的。这就是为什么它可以在您的控制器和您的视图中访问。但是,在邮件程序级别没有请求对象,因此在这种情况下您必须详细说明。

于 2012-05-21T21:11:58.650 回答
0

就像您描述的那样,在全局某处设置一个常量。将它放在 顶部的某个位置application.rb,或者可能是每个开发环境文件中的不同值?

或者,也许您可​​以创建一个Constants内部声明特定常量的类?(你的电话是Constants::ROOT_URL。)

或者,在 Rails 启动之前在你的 shell 中设置一个环境变量并使用ENV['ROOT_URL']

另一个答案提到taht _pathhelpers不需要域名。这是真的——但我不确定_url助手是如何工作的,因为我认为他们应该给你一个完整的 URI?您可能想调查_url帮助程序的工作方式。

于 2012-05-21T21:20:43.180 回答