что означает redirect_to (@model) в рельсах? - PullRequest
6 голосов
/ 20 августа 2011

Из этого URL http://www.helloworlder.com/?p=6 я нашел синтаксис для redirect_to или render, ожидает строку.

Как это:

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

Но в рубиновых направляющих я вижу что-то вроде redirect_to(@model). В их документах говорится, что он пойдет на демонстрацию. Пожалуйста, объясните, что означает redirect_to(@model).

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 августа 2011

Например, у вас есть модель Post.

redirect_to @model приведет вас на эту страницу:

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

3 голосов
/ 20 августа 2011

Вы можете посмотреть на источник здесь: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb

Когда redirect_to берет Model, он фильтрует несколько методов, чтобы получить путь, вызывающий метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...