如何在 Devise Invitable 中动态更改 accept_invitation_url 中使用的 URL?
How to change URL used in accept_invitation_url dynamically in Devise Invitable?
我正在使用 Devise invitable 进行邀请。我们在单个 rails 应用程序中使用不同的子域,例如 test1.domain.com、test2.domain.com 等,并希望我们发送给用户的邀请 url 能够反映这一点。
因为该值似乎基于 config/production.rb:
中的配置变量
config.action_mailer.default_url_options = { host: 'www.domain.com' }
我不清楚更改电子邮件视图中使用的 url 的最佳方法是什么:
<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %>
我找不到 accept_invitation_url 的来源,所以我什至不确定它是在哪里设置的。
非常感谢任何帮助!
菜鸟错误:
诀窍是停止尝试将此作为设计不可避免的问题进行搜索,而更多的是一般的 ActionMailer 问题,这让我找到了这个简单的解决方案:http://excid3.com/blog/change-actionmailer-email-url-host-dynamically/
基本上只需使用您想要的任何逻辑在应用程序控制器中重置 url:
before_filter :set_mailer_host
def set_mailer_host
ActionMailer::Base.default_url_options[:host] = request.host_with_port
end
我正在使用 Devise invitable 进行邀请。我们在单个 rails 应用程序中使用不同的子域,例如 test1.domain.com、test2.domain.com 等,并希望我们发送给用户的邀请 url 能够反映这一点。
因为该值似乎基于 config/production.rb:
中的配置变量config.action_mailer.default_url_options = { host: 'www.domain.com' }
我不清楚更改电子邮件视图中使用的 url 的最佳方法是什么:
<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %>
我找不到 accept_invitation_url 的来源,所以我什至不确定它是在哪里设置的。
非常感谢任何帮助!
菜鸟错误:
诀窍是停止尝试将此作为设计不可避免的问题进行搜索,而更多的是一般的 ActionMailer 问题,这让我找到了这个简单的解决方案:http://excid3.com/blog/change-actionmailer-email-url-host-dynamically/
基本上只需使用您想要的任何逻辑在应用程序控制器中重置 url:
before_filter :set_mailer_host
def set_mailer_host
ActionMailer::Base.default_url_options[:host] = request.host_with_port
end