我在localhost:3000上注册确认电子邮件。在我的development.rb中我添加了这样的
config.action_mailer.default_url_options = {:host => 'localhost:3000'}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => 'smtp.gmail.com',
:port => '587',
:authentication => :plain,
:user_name => 'myemail@gmail.com',
:password => 'mypassword',
:domain => 'localhost:3000',
:enable_starttls_auto => true
}
当我注册时,我已打开我的电子邮件,然后在收件箱中显示消息您可以通过以下链接确认您的帐户电子邮件:确认我的帐户我点击此链接。它重定向到localhost:3000 / users / sign_in,我可以成功登录。但是当我再次点击我的收件箱中的这个链接(确认我的帐户)时,显示如下错误:
在网址:http://localhost:3000/users/confirmation?confirmation_token=dWUeHVP_N7VzsVwvkNW5
meassage错误:
Resend confirmation instructions
1 error prohibited this user from being saved:
Confirmation token is invalid
在我的电子邮件收件箱中点击链接"确认我的帐户"我希望它重定向到localhost:3000 / users / sign_in。如何在点击链接时重定向到localhost:3000 / users / sign_in"确认我的帐户"又一次?请帮帮我!
答案 0 :(得分:1)
确认confirm_token变为nil后,您只能使用一次确认链接并导致此错误。如果要确认已经完成,请将某个重定向到sign_in url。然后你需要覆盖设计确认控制器。
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
if resource.errors.empty?
set_flash_message(:notice, :confirmed) if is_flashing_format?
sign_in(resource_name, resource)
respond_with_navigational(resource){ redirect_to after_confirmation_path_for(resource_name, resource) }
else
redirect_to new_user_session_path
#respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render :new }
end
end