有人能指出我对`redirect_to @ model`的文档吗?

时间:2016-06-28 09:04:10

标签: ruby-on-rails

在我生成的控制器中,我看到了:

 format.html { redirect_to @foo, notice: 'Foo was successfully created.' }

我在任何地方都看不到的是redirect_to在传递模型时所做的事情的描述。

我知道redirect_to的作用。但是,这种特殊形式与redirect_to url_for_fooredirect_to action: :show有何不同?

2 个答案:

答案 0 :(得分:0)

redirect_to使用url_for生成重定向客户端的路径。

当模型传递给url_for时,它会尝试根据实例组合相应的资源URL。参见例如

<%= url_for(@workshop) %>
# calls @workshop.to_param which by default returns the id
# => /workshops/5

同样适用于action: "show",网址再次是url_for计算的结果。您可以在我上面链接的url_for文档中查看更多详细信息。

答案 1 :(得分:0)

根据http://api.rubyonrails.org/classes/ActionController/Redirecting.html:  redirect_to(options = {},response_status = {}) 链路

将浏览器重定向到选项中指定的目标。此参数可以是以下任何一个:

  • 哈希 - 将使用选项调用url_for生成URL。
  • 记录 - 将通过调用带有选项的url_for生成URL,该选项将引用该记录的命名URL。

查看http://apidock.com/rails/ActionView/RoutingUrlFor/url_for上的url_for文档。如上所述:

传递记录(如Active Record)而不是hash作为options参数将触发该记录的命名路由。查找将在类的名称上进行。因此,传递Workshop对象将尝试使用workshop_path路由。如果你有一个嵌套的路由,比如admin_workshop_path你必须明确地调用它(url_for不可能猜出那条路线)。

示例:

<%= url_for(@workshop) %>
# calls @workshop.to_param which by default returns the id
# => /workshops/5