我目前正在阅读Beginning Rails 3。我有一个关于重定向的问题。该书指出,“redirect_to 也可以将对象作为参数”与路径。所以他们给出的例子是
redirect_to(@article)
是等效于的快捷方式
redirect_to(article_path(:id => @article))
我不确定我是否理解这一点。:id => @article 这行到底是什么意思?
谢谢,迈克
我目前正在阅读Beginning Rails 3。我有一个关于重定向的问题。该书指出,“redirect_to 也可以将对象作为参数”与路径。所以他们给出的例子是
redirect_to(@article)
是等效于的快捷方式
redirect_to(article_path(:id => @article))
我不确定我是否理解这一点。:id => @article 这行到底是什么意思?
谢谢,迈克
redirect_to(@article)
是
redirect_to(article_path(@article))
. Rails 可以这样做,因为它从@article
变量中提取类名,例如send("#{@article.class.name.downcase}_path")
.
redirect_to(article_path(@article))
是 的快捷方式redirect_to(article_path(:id => @article))
,这是 的快捷方式redirect_to(article_path(:id => @article.to_param))
。基本上 Rails 说,@article 是一个 ActiveRecord 对象,我会问它的神奇to_param
价值。默认情况下,to_param
只返回文章的 ID,但您可以覆盖它以像 slug 或 nicename 一样返回,例如38-hello-world
.
所以redirect_to(@article)
真的是说,好吧,我有一篇文章,所以我需要文章的路径,我需要文章的资源标识符,或to_param
。
然后它构造 URL!
:id => @article
是 的快捷方式:id => @article.to_param
,它只指定您要查看的文章。
首先,rake routes
在您的控制台中执行。它将显示您的应用程序的路线列表。
会有一条路由叫做article。
article_path
只是路线文章的链接。
通过这样做(:id => @article)
,您将向它传递一个id
具有该@article
值的参数。