redirect_to(@model)在rails中意味着什么?
问题描述:
从这个网址http://www.helloworlder.com/?p=6我发现redirect_to或render的语法,需要一个字符串。redirect_to(@model)在rails中意味着什么?
像这样:
render(:action=>’my_action’)
redirect_to(:action=>’my_action’)
但是在Ruby导轨导我看到类似redirect_to(@model)
。在他们的文件中指出,它将会采取行动。请解释redirect_to(@model)
的含义。
感谢
答
你可以看一下这里的源: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
当redirect_to的采用模型,它过滤通过一些方法来获取路径调用polymorphic_url方法。这个方法的API [1]其实有很多细节,从这里评论复制:
# 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