我目前正在阅读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值的参数。