我已经使用Rails 4.2.7.1成功设置了Devise 4.2'可恢复'模块。用户体验如下:
我遇到的问题是在恢复电子邮件的正文中。它里面的一切都有效!但是,我网站的链接省略了网站名称中的“www”,导致链接的页面显示以下错误:
无法访问此网站 找不到example.com的服务器DNS地址。 ERR_NAME_NOT_RESOLVED
如果我按照该电子邮件正文中的链接访问该页面,我将收到该错误。
生成的链接为http://example.com/admin/users/password/edit.10?reset_password_token=NfGEHb3z6uF7qPyqd79V
奇怪的是,如果我手动将“www”添加到此错误页面的地址栏中,一切都很有效。也就是说,以下工作:
http://www.example.com/admin/users/password/edit.10?reset_password_token=NfGEHb3z6uF7qPyqd79V
如果我删除以下所有内容,它也有效:
http://example.com/admin/
请注意,在这种情况下,我省略了'www',但它仍然有效。
以下是恢复电子邮件的代码:
<p>Hello <%= @resource.email %>!</p>
<p>Someone has requested a link to change your password. You can do this through the link below.</p>
<p><%= link_to 'Change my password', edit_admin_user_password_url(@resource, :reset_password_token => @token) %></p>
<p>If you didn't request this, please ignore this email.</p>
<p>Your password won't change until you access the link above and create a new one.</p>
以下是routes.rb的摘录,如果相关:
root :to => 'pages#index'
devise_for :users, {:class_name => "User", :module => :devise, :controllers => { :sessions => "admin/sessions" } }
resources :users
namespace :admin do
devise_for :users, {:class_name => "User", :module => :devise, :controllers => { :sessions => "admin/sessions" } }
resources :users, :properties, :locations, :pages, :companies, :islands, :tags, :property_types, :articles, :announcements, :features
resources :agents, :controller => "users"
resources :administrators, :controller => "users"
resources :superadmins, :controller => "users"
resources :photos do
collection do
delete 'destroy_multiple'
end
end
end
一些可能不相关的细节:
可能有人知道我做错了什么?
答案 0 :(得分:0)
您可以在不更改代码的情况下解决此问题。如果您告诉您的DNS www.example.com和example.com解析到同一台服务器,那么您应该没问题。