现在我正在扩展Devise会话控制器。一切都工作正常,但密码输入错误或无法找到用户。它试图重定向到会话#new。我不希望在我的情况下我希望它重定向到自定义路由,因为它来自与会话新视图不同的视图。我知道after_sign_in_path_for
,但我不确定这是我想要的,因为我的具体案例是warden.authenticate!方法。在auth_options中有一个召回散列。这是我想要自定义路线的地方。这是我的会话控制器。
class SessionsController < Devise::SessionsController
def create
super do |user|
if params[:user][:invitation_id].present?
invitation = Invitation.find(params[:user][:invitation_id])
if !user.accounts.exists?(id: invitation.account.id)
user.accounts << invitation.account
flash[:tip_off] = "You now have access to your project \"#{invitation.account.name}\""
else
flash[:tip_off] = "You are already a member of #{invitation.account.name}"
end
cookies[:account_id] = invitation.account.id
invitation.destroy
user.save
end
end
end
end
正如我之前所述,这项工作正常我只需要在密码或电子邮件失败时自定义路由。现在它转到会话#new,这对我的情况不起作用。任何帮助都会很棒!感谢
答案 0 :(得分:1)
您可以覆盖auth_option方法的调用值,以便在失败时重定向到另一个路由。
def auth_option
{ scope: resource_name, recall: "#{controller_path}#another_new_path" }
end