为什么通过redirect_to传递这个对象来调用`show`动作?

时间:2014-07-14 21:41:14

标签: ruby-on-rails resources

def create
  @article = Article.new(params[:article])

  @article.save
  redirect_to @article
end

def show
    @article = Article.find(params[:id]) 
end 

我按照Rails入门指南进行操作。我有一个表单,在单击提交按钮时,使用表单输入创建一个@article对象(RESTful对象)。

redirect_to @article/articles/id发送GET请求,对吗?如果是这样,为什么会这样呢?这只是redirect_to的工作原理吗?

2 个答案:

答案 0 :(得分:2)

如果传递的参数是记录,则

redirect_to调用url_for。

url_for在记录中调用to_param,默认情况下返回id。

因此redirect_to @article将生成/ articles /:id

答案 1 :(得分:1)

<强>物件

要添加到Nishu的答案,当您在任何 path_helper(link_toredirect_to等)中引用对象时,Rails会做的很难工作并向您显示对象

的路线

请记住,Ruby / Rails是一个object-orientated框架,这意味着你所做的一切都必须围绕一个对象。对于Rails,对象使用模型中的数据填充,使用ActiveRecord

完成

-

因此,如果您使用redirect_to @article,Rails基本上会查找该特定记录的show操作。由于您的路线resourceful - 这意味着Rails基本上可以查找相关路线以自行显示该记录

希望这有帮助吗?