Rails中的重定向和路由

时间:2012-05-16 23:25:35

标签: ruby-on-rails

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

redirect_to(@article)

是等同于

的快捷方式
redirect_to(article_path(:id => @article))

我不确定我明白这一点。究竟是什么行:id => @article说什么?

感谢, 麦克

3 个答案:

答案 0 :(得分: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!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

article_path只是路径文章的链接。

通过执行(:id => @article),您传递的id参数值为@article