Rails3 + Devise:edit_password_url吐出http // www.blah.com(没有冒号的http!)

时间:2011-06-15 05:48:24

标签: ruby-on-rails devise omniauth

当用户从我们的生产服务器收到我们的应用程序中的更改密码链接时,无论出于何种原因,他们都会得到一个绝对的网址,而不是冒号http://。结果,人们抱怨链接不起作用。

问题只发生在我的生产环境中,但我确实在/config/environments/production.rb中设置了这个:

config.action_mailer.default_url_options = { :host => 'http://www.blah.com' }

所以我不确定问题是什么。我还搜索了整个网站的字符串“http //”,看看它是否只是某个地方的设置错字,但没有骰子。

confirmation_instructions.html.erb本身不受影响,链接生成如下:

<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>

那么废话会导致我的服务器丢弃:来自http:// ??有没有人曾经遇到过这个问题?关于如何修复它的任何理论?提前谢谢!

2 个答案:

答案 0 :(得分:6)

我也遇到了这个问题。问题(奇怪的是)你在default_url_options(:host =&gt;'http://www.blah.com')中使用了完整的URL。如果你把www.blah.com改成它似乎工作。昨晚我遇到了这个问题,这对我来说是最快的解决方案。

答案 1 :(得分:1)

创建新的邮件程序扩展Devise :: Mailer并覆盖他的方法:

def reset_password_instructions(record)
end
def confirmation_instructions(record)
end
def unlock_instructions(record)
end

接下来转到config / initializers / devise.rb并在config.mailer之前删除哈希值 在这个地方设置你自己的邮件。

多数人