如果我在具有相同环境的不同系统中启动rails服务器,我需要获得动态主机。我如何获得主机并将其发送到邮件正文。
目前正在使用以下配置,
in config/development.rb:
config.action_mailer.default_url_options = { :host => "example.com" }
in app/mailers/notifications.html.erb :
<%= test_url(id) %>
答案 0 :(得分:1)
您可以在从控制器调用邮件程序功能时传递请求 -
class UserMailer < ActionMailer::Base
def welcome_email(user, request)
UserMailer.default_url_options[:host] = request.host_with_port #option1
@user = user
@url = user_url(@user, host: request.host_with_port ) #option2 (do this for each link)
mail(:to => user.email,
:subject => "Welcome to My Awesome Site")
end
end
在上面的代码中request.host_with_port
代表您的"example.com"
。
以上是提供请求主机的更动态的方法,因为您可以看到在从控制器调用邮件程序功能时可以传递请求。
这是您可以检查的来源 - Generating-urls-in-action-mailer-views
这也是action-mailer-default-url-options-and-request-host的解释,在此标记为要阅读的答案。
答案 1 :(得分:0)
对不同应用程序服务器的统一处理主要是一个功能。
如果你想区分我会建议设置和使用环境变量。
例如,您在主机中导出具有不同值的APP_SERVER
变量,然后从Ruby / Rails代码中访问它们
ENV['APP_SERVER']