设计重定向首次登录

时间:2014-02-04 23:51:50

标签: redirect devise ruby-on-rails-4

我们正试图让新用户在首次登录时填写情况说明书,然后在剩余的时间内登陆他们的仪表板。

在这里发帖子: 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

2 个答案:

答案 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

人们使用相同的东西并且有效。