【问题标题】:what does redirect_to(@model) means in rails?redirect_to(@model) 在 Rails 中是什么意思?
【发布时间】:2011-08-20 10:07:01
【问题描述】:

从这个 url 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) 是什么意思。

谢谢

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    例如,您有一个 Post 模型。

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

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

    【讨论】:

      【解决方案2】:

      您可以在此处查看源代码: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb

      redirect_to 接受 Model 时,会通过几个方法过滤,获取调用 polymorphic_url 方法的路径。这个方法[1]的API其实有很多细节,这里抄自cmets:

        # 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

      【讨论】:

        猜你喜欢
        • 2017-03-07
        • 2019-01-02
        • 2018-04-25
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 2011-08-12
        • 2017-06-11
        • 2018-03-05
        相关资源
        最近更新 更多