简单的问题。什么是首选,为什么,或者它根本不重要? 魔法 gem 示例:
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 在执行 Controller 操作中的所有代码后会将您带到哪里,它还可能有助于阻止您多次调用 redirect_to
并导致 DoubleRenderError
.
如果您查看 redirect_to documentation然后点击“show source”链接你可以看到它基本上只是设置变量,所以你真的可以在任何你想调用的地方调用它。 redirect_to
看起来类似于您在其他语言中看到的 return
语句,但它的行为并不像,所以请记住这一点。这只是一种在您的 Controller 上设置某些状态的方法。
关于ruby-on-rails - 重定向和登录或登录和重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463714/