Redirect 设计重定向首次登录

Redirect 设计重定向首次登录,redirect,devise,ruby-on-rails-4,Redirect,Devise,Ruby On Rails 4,我们正试图让一个新用户在第一次登录时填写一份情况介绍,然后在其余时间登录到他们的仪表板上 请点击这里的帖子: 我们将其添加到我们的应用程序控制器: def after_sign_in_path_for(user) redirect_to ((current_user.sign_in_count == 0) ? new_fact_sheet_path : dashboard_index_path ) end 但是我们得到了这个错误: “Desive::RegistrationsContro

我们正试图让一个新用户在第一次登录时填写一份情况介绍,然后在其余时间登录到他们的仪表板上

请点击这里的帖子:

我们将其添加到我们的应用程序控制器:

def 
after_sign_in_path_for(user) 
redirect_to ((current_user.sign_in_count == 0) ? new_fact_sheet_path : dashboard_index_path )
end
但是我们得到了这个错误:

“Desive::RegistrationsController#create中的AbstractController::DoubleRenderError 此操作中多次调用了Render和/或redirect。请注意,您只能调用Render或redirect,并且每个操作最多只能调用一次。还要注意,redirect和Render都不会终止操作的执行,因此,如果您想在重定向后退出操作,则需要执行类似“重定向到(…)并返回”的操作

我们以为我们正在用应用程序控制器中的重定向覆盖designe默认路由

解决方案: 正如下面的评论所述,这最终是一个由两部分组成的解决方案。有效的代码:

def 
after_sign_in_path_for(user) 
((current_user.sign_in_count == 1) ? new_fact_sheet_path : dashboard_index_path )
end

我想它应该在控制器上, 请阅读以下内容:


人们使用了相同的东西,它也能工作。

我认为您的双渲染器错误的原因是,在为(资源或范围)在路径中签名后,应该只返回路径,该路径稍后由designe用于重定向。但是,在为()在路径中签名后,您在覆盖的
中调用
重定向到
,因此它被重定向了两次。只需将
重定向\u放到
,然后简单地返回相应的路径。

谢谢!结合下面答案中的信息,就成功了。删除重定向\u以消除错误,但并没有让我们进入正确的页面。我们必须按照下面的说明进行调整以获得正确的结果Desive的正确行为。谢谢!这就引出了第二个问题。一旦我们解决了错误,我们需要更改符号\u in\u count==1。