我的 Rails 应用程序中有 2 种不同的语言,并且希望能够以正确的语言设置域名。例如,如果用户从 app.FR 注册,我希望在下面的示例中使用扩展名 .FR 而不是 .COM 有没有办法做到这一点?
config.action_mailer.asset_host = "http://app.com"
config.action_mailer.default_url_options = {:host => 'app.com'}
解决方案似乎是在 ApplicationController 中设置一个 before 过滤器并创建一个如下函数:
def set_mailer_host
ActionMailer::Base.default_url_options[:host] = request.host_with_port
end
请记住,当从 Rails 控制台发送邮件时,这将不起作用,因为 Rails 控制台不会传递真正的 ActionController。
在
ApplicationController
:
class ApplicationController < ActionController::Base
end
在
ApplicationMailer
类中,设置以下方法:
def default_url_options
{ host: "app.fr" }
end