我正在阅读Beginning Rails 3.我有一个关于重定向的问题。该书指出“redirect_to也可以将对象作为参数”与路径相对应。所以他们给出的例子是
redirect_to(@article)
是等同于
的快捷方式redirect_to(article_path(:id => @article))
我不确定我明白这一点。究竟是什么行:id => @article说什么?
感谢, 麦克
答案 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
。