我们正试图让新用户在首次登录时填写情况说明书,然后在剩余的时间内登陆他们的仪表板。
在这里发帖子: devise first login with rails
我们将此添加到我们的应用程序控制器:
def
after_sign_in_path_for(user)
redirect_to ((current_user.sign_in_count == 0) ? new_fact_sheet_path : dashboard_index_path )
end
但是我们收到了这个错误:
“Devise中的AbstractController :: DoubleRenderError :: RegistrationsController #create” 在此操作中多次调用渲染和/或重定向。请注意,您只能调用渲染或重定向,每次操作最多一次。另请注意,重定向和呈现都不会终止执行操作,因此如果要在重定向后退出操作,则需要执行类似“redirect_to(...)并返回”的操作。
我们认为我们在应用程序控制器中使用重定向覆盖了Devise默认路由?
解决方案: 如下面的评论中所述,这最终成为一个由两部分组成的解决方案。有效的代码:
def
after_sign_in_path_for(user)
((current_user.sign_in_count == 1) ? new_fact_sheet_path : dashboard_index_path )
end
答案 0 :(得分:3)
我认为你的DoubleRenderError的原因是因为after_sign_in_path_for(resource_or_scope)
应该只返回稍后用于通过设计重定向的路径。但是,您在被覆盖的redirect_to
内呼叫after_sign_in_path_for()
,因此会重定向两次。只需删除redirect_to
,然后返回相应的路径即可。
答案 1 :(得分:0)
我认为它应该在DeviseSessionController上, 请阅读:Devise After first login redirect
人们使用相同的东西并且有效。