2011-08-20 26 views
6

Từ url này http://www.helloworlder.com/?p=6 tôi đã tìm thấy cú pháp cho redirect_to hoặc render, dự kiến ​​một chuỗi.redirect_to (@model) có nghĩa là gì trong đường ray?

Như thế này:

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

Nhưng trong ruby ​​ray hướng dẫn tôi thấy cái gì đó như redirect_to(@model). Nó được nêu trong tài liệu của họ rằng nó sẽ đi để hiển thị hành động. Vui lòng giải thích phương thức redirect_to(@model).

Cảm ơn

Trả lời

3

Bạn có thể nhìn vào nguồn ở đây: https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb

Khi redirect_to mất một Model, nó lọc qua một vài phương pháp để có được những con đường gọi phương thức polymorphic_url. API cho phương pháp này [1] thực sự có rất nhiều chi tiết, sao chép từ các ý kiến ​​ở đây:

# 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() 

Về cơ bản, câu trả lời cho câu hỏi của bạn là nó gọi (tương đương) các model_path (@model) phương pháp cho ngươi mâu.

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

Các vấn đề liên quan