在我生成的控制器中,我看到了:
format.html { redirect_to @foo, notice: 'Foo was successfully created.' }
我在任何地方都看不到的是redirect_to在传递模型时所做的事情的描述。
我知道redirect_to
的作用。但是,这种特殊形式与redirect_to url_for_foo
或redirect_to action: :show
有何不同?
答案 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 = {}) 链路
将浏览器重定向到选项中指定的目标。此参数可以是以下任何一个:
查看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