- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 devise :confirmable 配置我的 Rails 应用程序,注册后用户会收到一封带有确认链接的电子邮件。当用户第二次单击此链接时, token 无效,这是我的应用程序中的预期行为。但是,它将用户发送到位于“app\views\devise\confirmations\new.html.erb”的页面,并显示错误“确认 token 无效”,我想要的是显示该错误(<%= devise_error_messages! %>),但在我的登录页面中。 (实际上,有两种可能的状态:a)token过期,用户未被确认,用户必须再次申请token; b) token 已过期且用户已确认,因此用户必须登录)
为此,我继承了 Devise::ConfirmationsController 创建我自己的 ConfirmationsController 来覆盖 show 方法,这样我可以在出现任何错误时重定向到登录页面,如下所示:
class ConfirmationsController < Devise::ConfirmationsController
def after_confirmation_path_for(resource_name, resource)
super
end
def new
super
end
def after_resending_confirmation_instructions_path_for(resource_name)
super
end
def create
super
end
def show
self.resource = resource_class.confirm_by_token(params[:confirmation_token])
if resource.errors.empty?
set_flash_message(:notice, :confirmed) if is_navigational_format?
sign_in(resource_name, resource)
respond_with_navigational(resource){ redirect_to
after_confirmation_path_for(resource_name, resource) }
else
respond_with_navigational(resource.errors, :status => :unprocessable_entity){ render 'devise/sessions/new' }
end
end
end
在我的 routes.rb 中我有这样的配置:
get "confirmations/show"
devise_for :users, :path => '', :path_names => {:sign_in => 'login', :sign_out => 'logout'}, :controllers => {:confirmations => 'confirmations'}
(...)
它正确地重定向到登录页面,但我不能将 resources.errors 中存在的错误传递给登录页面,无论多么困难 我试试。我该如何解决这个问题?
顺便说一句,我的用户模型是这样配置的:
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
最佳答案
您唯一需要做的就是更改 confirmation_instructions.html.erb
只需替换这一行
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %></p>
有了这个
<p><%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %></p>
就是这样。
关于ruby-on-rails - 如何在 Devise 上重定向 'Confirmation token invalid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261840/
我正在尝试让删除确认执行一个删除当前 ID 数据的函数。 我收到这个错误: Uncaught TypeError: Cannot read property 'call' of undefined 在
我经常处理在 Kate 中打开的大量文件。然后,当关闭我正在编辑的一个文件时,我无意识地按了 alt+F4,然后凯特高兴地关闭了我正在编辑的所有打开的文件,让我再次大喊大叫,并用键盘和硬件进行了另一次
这个问题在这里已经有了答案: What is the difference between alert and window.alert? (2 个答案) 关闭 9 年前。 window.confi
我使用以下代码通过 jquery ui 对话框使用默认的 javascript 确认。 jQuery.extend({ confirm: function(message, title, ok
我正在使用以下代码: :delete, :confirm => "You sure you want to delete "
Window.prototype.confirm 和 Window.confirm 有什么区别? 我正在处理一个更改请求,上面写着 We need to have a title on confirm
单击链接时,确认框消息会正常显示。 "Are you sure?", :method => :delete %> 出现确认框时,默认选中“确定”按钮;我希望默认选择“取消”按钮,这样如果用户
我正在编写一个依赖于 RabbitMQ 的 Node.js 应用程序。我正在使用 node-amqp 作为连接到 RabbitMQ 的首选库。 建立到 RabbitMQ 的连接后,我要做的第一件事就是
这是我的 sweetalert 我想在单击此确认按钮时更新我的数据库 STATUS 列请帮助我谢谢 swal({ title: 'Are you sure?', text: "Yo
有人可以告诉我,如何才能在注册的确认后后发送此邮件。无论是忘记密码/重设密码还是注册,此代码都会在每次确认后发送邮件。 var aws = require('aws-sdk'); var ses =
我想使用UIkit.modal.confirm来确认用户在UIkit.modal.prompt中的输入,如果他们确认则继续,否则返回UIkit.modal.confirm. UIkit.modal.p
在 Azure DevOps 管道中的一项任务中,我尝试停止 IIS 服务器。这可以通过在命令提示符中调用命令net stop WAS来实现。手动执行此操作,它会要求确认 手动方式,我只需按 Y EN
在 Azure DevOps 管道中的一项任务中,我尝试停止 IIS 服务器。这可以通过在命令提示符中调用命令net stop WAS来实现。手动执行此操作,它会要求确认 手动方式,我只需按 Y EN
我有一个在 AJAX 调用完成后执行的 javascript 代码。 req.done(function (response, textStatus, jqXHR){ if (response
我有一个移动网站,供各种设备使用,包括一些运行带 IE 7 的 Windows Embedded 7 锁定版本的车载计算机。出于某种我无法解释的原因,window.confirm() 已损坏,但所有其
这里是第一个问题,Stackoverflow 的新手,所以如果我有什么遗漏的地方,请指导我。我的问题如下, 我正在创建一个自定义弹出消息,例如 window.confirm。在函数中,用户需要传递一些
我正在尝试从确认框中删除“确认”标题,我在确认对话框中获取页面名称,这看起来很尴尬。 请帮我从确认对话框中删除标题。 最佳答案 不要使用window.confirm(),因为这使用了WebView的内
我在使用angular-js时调用phonegap的notification.confirm。 我的代码如下: ng-click= func(item) $scope.func = function(
我正在为用户编写删除确认代码,但是当我运行它时,它显示了这个错误 这是我的代码 onDelete = (id) => { console.log(id); if (co
我在应用程序中使用$ mdDialog,但想将其用作“确认”对话框而不是普通对话框。这意味着,在用户单击“确认”对话框中的两个按钮之一之前,不应继续执行代码流。我注意到可以使用$ mdDialog.c
我是一名优秀的程序员,十分优秀!