简单的问题。什么是首选,为什么,或者根本不重要?魔法宝石示例:
if @user.save
redirect_to index_path
auto_login(@user)
或者
if @user.save
auto_login(@user)
redirect_to index_path
只是一个地方的跳过,一行可能并不重要,但什么更好,更安全,为什么或它真的不重要?
简单的问题。什么是首选,为什么,或者根本不重要?魔法宝石示例:
if @user.save
redirect_to index_path
auto_login(@user)
或者
if @user.save
auto_login(@user)
redirect_to index_path
只是一个地方的跳过,一行可能并不重要,但什么更好,更安全,为什么或它真的不重要?
只要您为调用提供有效参数,顺序并不重要redirect_to
。redirect_to
如果您不提供有效参数并因此auto_login
不会运行,则会引发异常,但您不会看到错误,redirect_to
除非您正在做一些非常错误的事情,例如传入nil
选项或者您已经调用redirect_to
了该方法。
我倾向于选择redirect_to
最后一个,因为从控制流的角度来看这是有道理的。它让您大致了解 Rails 将在您的控制器操作中执行所有代码后将您带到哪里,并且它还可能有助于阻止您redirect_to
多次调用并导致DoubleRenderError
.
如果您查看redirect_to 文档并单击“显示源”链接,您会发现它基本上只是设置变量,因此您可以在任何您想要的地方调用它。redirect_to
看起来与return
您在其他语言中看到的语句相似,但它不像一个语句,所以请记住这一点。这只是一种在控制器上设置某些状态的方法。
我会先登录然后重定向。
您重定向到的位置可能取决于登录的用户。它可能不适用于您的情况,但在其他情况下可能,并且以后可能会在您的应用程序开发中使用。
例如,如果更改索引路由,使其根据用户是否登录而转到不同的位置,那么无论您在重定向之前还是之后登录都非常重要。如果您在重定向后登录,那么您将重定向到未登录用户的路由版本。