redirect_to(@model)在rails中意味着什么?

时间:2011-08-20 10:07:01

标签: ruby-on-rails

从这个网址http://www.helloworlder.com/?p=6我找到了redirect_to或render的语法,需要一个字符串。

像这样:

render(:action=>’my_action’)
redirect_to(:action=>’my_action’)

但是在ruby rails指南中,我看到redirect_to(@model)之类的东西。在他们的文档中说明它将展示行动。请解释redirect_to(@model)的含义。

由于

2 个答案:

答案 0 :(得分:4)

例如,您有一个Post模型。

redirect_to @model会带你到这个页面:

http://yourapp/posts/:id/show

答案 1 :(得分:3)

你可以在这里查看来源: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb

当redirect_to接受Model时,它会过滤几个方法来获取调用polymorphic_url方法的路径。这个方法[1]的API实际上有很多细节,从这里的评论中复制出来:

  # Constructs a call to a named RESTful route for the given record and returns the
  # resulting URL string. For example:
  #
  #   # calls post_url(post)
  #   polymorphic_url(post) # => "http://example.com/posts/1"
  #   polymorphic_url([blog, post]) # => "http://example.com/blogs/1/posts/1"
  #   polymorphic_url([:admin, blog, post]) # => "http://example.com/admin/blogs/1/posts/1"
  #   polymorphic_url([user, :blog, post]) # => "http://example.com/users/1/blog/posts/1"
  #   polymorphic_url(Comment) # => "http://example.com/comments"
  #
  # ==== Options
  #
  # * <tt>:action</tt> - Specifies the action prefix for the named route:
  #   <tt>:new</tt> or <tt>:edit</tt>. Default is no prefix.
  # * <tt>:routing_type</tt> - Allowed values are <tt>:path</tt> or <tt>:url</tt>.
  #   Default is <tt>:url</tt>.
  #
  # ==== Examples
  #
  #   # an Article record
  #   polymorphic_url(record)  # same as article_url(record)
  #
  #   # a Comment record
  #   polymorphic_url(record)  # same as comment_url(record)
  #
  #   # it recognizes new records and maps to the collection
  #   record = Comment.new
  #   polymorphic_url(record)  # same as comments_url()
  #
  #   # the class of a record will also map to the collection
  #   polymorphic_url(Comment) # same as comments_url()

基本上,您的问题的答案是它(等效地)调用模型的model_path(@model)方法。

[1] http://apidock.com/rails/ActionController/PolymorphicRoutes/polymorphic_url