2013-09-28 379 views
5

Tôi bắt đầu tìm hiểu Ruby on Rails và tôi có một số nghi ngờ.link_to vs url_for vs đường dẫn trong Rails

Tôi đã các Rails documentation thấy nhưng tôi không hiểu gì cả sự khác nhau giữa:

  • url_for
  • link_to
  • đường

Và làm thế nào tôi có thể sử dụng/khám phá đường dẫn của ứng dụng của tôi? Ngoài ra, tôi có thể gửi thông số trong đường dẫn, như:

<%= users_path + "/user.id/" %> 

Có điều gì tương tự không?

+0

Bạn đã kiểm tra điều này chưa? http://guides.rubyonrails.org/routing.html#listing-existing-routes – depa

Trả lời

9

url_for cung cấp cho bạn url đầy đủ đến trang web, ví dụ: www.example.com/my/path sẽ đến từ một cái gì đó như url_for my_path_url.

link_to cung cấp cho bạn một liên kết đến một đường dẫn cụ thể, ví dụ:

link_to example_path,"click me" 

sẽ cho kết quả trong

<a href="www.example.com/my/path">click me</a> 

Bạn cũng có thể sử dụng điều này với url_for như thế này:

link_to url_for(my_resource_path) 

resource_path được sử dụng để tham chiếu đường dẫn trong tệp routes.rb của bạn. Ví dụ: nếu bạn có

match '/my/:id/page' => 'my#page' 

bạn có thể sử dụng my_page_path(...).

Nếu bạn cần :id cho đường dẫn, bạn có thể vượt qua nó như trong các thông số để resource_path của bạn như thế này: my_page_path(current_user.id).

Bên cạnh đó, bạn có thể thêm vào tham số truy vấn khác bằng cách gắn thêm họ các thông số tuyến đường định sẵn:

my_page_path(current_user.id,:hello => "world") 

Bạn hỏi về việc liệu bạn có thể thêm đường dẫn đến một con đường hiện có. Có, bạn có thể, vì các hàm này đơn giản trả về chuỗi cho người gọi, vì vậy cho tất cả các ý định và mục đích bạn có thể làm chính xác những gì bạn đã viết miễn là đường dẫn đó liên hợp với chuỗi của bạn thành một tuyến đường thích hợp.

+0

Cảm ơn bạn, nếu bạn có thể tạo kiểu cho câu trả lời của mình tốt hơn. Dù sao tôi sẽ cung cấp cho bạn câu trả lời tốt nhất, nhưng tốt hơn nếu ai đó cần giúp đỡ quá. Và cảm ơn, điều này thực sự hữu ích. – Paladini

+0

'Ngoài ra, bạn có thể thêm vào các tham số truy vấn khác đơn giản bằng cách thêm chúng vào các tham số tuyến định sẵn' điều này là tốt, tôi không thể tìm thấy API để khám phá các tham số này? Ngay cả ở đây cũng vậy http://guides.rubyonrails.org/routing.html Bạn có biết tôi có thể tìm thấy tài liệu API như thế nào về phương pháp đường dẫn này không? – GMsoF