0

我目前正在阅读Beginning Rails 3。我有一个关于重定向的问题。该书指出,“redirect_to 也可以将对象作为参数”与路径。所以他们给出的例子是

redirect_to(@article)

是等效于的快捷方式

redirect_to(article_path(:id => @article))

我不确定我是否理解这一点。:id => @article 这行到底是什么意思?

谢谢,迈克

4

3 回答 3

1

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!

于 2012-05-17T01:07:00.987 回答
0

:id => @article是 的快捷方式:id => @article.to_param,它只指定您要查看的文章

于 2012-05-16T23:32:31.497 回答
0

首先,rake routes在您的控制台中执行。它将显示您的应用程序的路线列表。
会有一条路由叫做article

article_path只是路线文章的链接。

通过这样做(:id => @article),您将向它传递一个id具有该@article值的参数。

于 2012-05-16T23:32:34.847 回答