Redirecting

redirect_to

redirect_back

重要的部分就是可以根据不同的可选参数,计算出要重定向的 url.

使用举例:

# 字符串
redirect_to “www.rubyonrails.org”
redirect_to “/images/screenshot.jpg”
redirect_to articles_url

# :back
redirect_to :back

# Proc
redirect_to proc { edit_post_url(@post) }

# 其它可选参数,会用到 url_for 来处理

# record 对象
redirect_to post

# Hash
redirect_to action: “show”, id: 5
redirect_to({ action: 'atom' }, alert: "Something serious happened")

相关、类似功能:

url_for 根据给定的参数和 default_url_options 和 routes.rb 里的路由定义,生成可用的 url.

polymorphic_url 根据传递的 record 对象,构建可用的 url.

极端情况下,才会发生:

 redirect_to
     |
     V
ActionController::UrlFor
     |
     V
  url_for
     |
     V
AbstractController::UrlFor
     |
     V
ActionDispatch::Routing::UrlFor
     |
     V
ActionDispatch::Routing::PolymorphicRoutes
     |
     V
polymorphic_url
     |
     V
  ... ...

redirect_back 相当于来的 redirect_to :back 但它可接受 :fallback_location 参数,以应对 Referer 不存在的问题。

最后更新于