如何在Devise Invitable中动态更改accept_invitation_url中使用的URL?

时间:2015-03-04 11:47:03

标签: ruby-on-rails devise devise-invitable

我正在使用Devise邀请来邀请。我们在单个rails应用中使用不同的子域,例如test1.domain.com,test2.domain.com等,并希望我们发送给用户的邀请网址反映出来。

由于该值似乎基于config / production.rb中的config var:

config.action_mailer.default_url_options = { host: 'www.domain.com' }

我不清楚更改电子邮件视图中使用的网址的最佳方法是什么:

<%= link_to t("devise.mailer.invitation_instructions.accept"), accept_invitation_url(@resource, :invitation_token => @token) %>

我找不到accept_invitation_url的来源所以我甚至不确定它在哪里设置。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

新秀错误:

诀窍是停止尝试将其作为一个设计问题进行搜索,而更多的是一个一般的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