Css con cuối lồng nhau
Bộ định tuyến Rails nhận ra các URL và gửi chúng tới hành động của bộ điều khiển hoặc tới ứng dụng Rack. Nó cũng có thể tạo đường dẫn và URL, tránh phải mã hóa cứng các chuỗi trong chế độ xem của bạn 1. 1 Kết nối URL với MãKhi ứng dụng Rails của bạn nhận được yêu cầu đến cho nó yêu cầu bộ định tuyến khớp nó với một hành động của bộ điều khiển. Nếu tuyến đường phù hợp đầu tiên là Bản saoyêu cầu được gửi đến hành động 11 của bộ điều khiển 10 với 12 trong 13Rails sử dụng Snake_case cho tên bộ điều khiển ở đây, nếu bạn có bộ điều khiển nhiều từ như 14, bạn muốn sử dụng 15 chẳng hạn1. 2 Tạo đường dẫn và URL từ mãBạn cũng có thể tạo đường dẫn và URL. Nếu tuyến đường trên được sửa đổi thành Bản saovà ứng dụng của bạn chứa mã này trong bộ điều khiển Bản saovà điều này trong chế độ xem tương ứng Bản saosau đó bộ định tuyến sẽ tạo đường dẫn 16. Điều này làm giảm độ giòn của chế độ xem của bạn và làm cho mã của bạn dễ hiểu hơn. Lưu ý rằng id không cần được chỉ định trong trình trợ giúp tuyến đường1. 3 Định cấu hình Bộ định tuyến RailsCác tuyến cho ứng dụng hoặc công cụ của bạn nằm trong tệp 17 và thường trông như thế này 2Bản saoVì đây là tệp nguồn Ruby thông thường, bạn có thể sử dụng tất cả các tính năng của nó để giúp bạn xác định tuyến đường của mình nhưng hãy cẩn thận với các tên biến vì chúng có thể xung đột với các phương thức DSL của bộ định tuyến Khối 18 bao bọc các định nghĩa tuyến đường của bạn là bắt buộc để thiết lập phạm vi cho DSL của bộ định tuyến và không được xóaĐịnh tuyến tài nguyên cho phép bạn nhanh chóng khai báo tất cả các tuyến chung cho một bộ điều khiển tài nguyên nhất định. Một cuộc gọi duy nhất tới 19 có thể khai báo tất cả các tuyến đường cần thiết cho các hành động 20, 11, 22, 23, 24, 25 và 26 của bạn2. 1 Tài nguyên trên WebTrình duyệt yêu cầu các trang từ Rails bằng cách yêu cầu một URL bằng một phương thức HTTP cụ thể, chẳng hạn như 27, 28, 29, 30 và 31. Mỗi phương thức là một yêu cầu để thực hiện một thao tác trên tài nguyên. Một tuyến tài nguyên ánh xạ một số yêu cầu liên quan đến các hành động trong một bộ điều khiển duy nhấtKhi ứng dụng Rails của bạn nhận được yêu cầu đến cho nó yêu cầu bộ định tuyến ánh xạ nó tới một hành động của bộ điều khiển. Nếu tuyến đường phù hợp đầu tiên là Rails sẽ gửi yêu cầu đó đến hành động 26 trên bộ điều khiển 33 với 12 trong 132. 2 CRUD, Động từ và Hành độngTrong Rails, một tuyến tháo vát cung cấp ánh xạ giữa các động từ HTTP và URL tới các hành động của bộ điều khiển. Theo quy ước, mỗi hành động cũng ánh xạ tới một hoạt động CRUD cụ thể trong cơ sở dữ liệu. Một mục duy nhất trong tệp định tuyến, chẳng hạn như tạo bảy tuyến đường khác nhau trong ứng dụng của bạn, tất cả ánh xạ tới bộ điều khiển 36HTTP VerbPathController#ActionUsed forGET/photosphotos#indexhiển thị danh sách tất cả ảnhGET/photos/newphotos#newreturn form HTML để tạo ảnh mớiPOST/photosphotos#createtạo ảnh mớiGET/photos/. idphotos#showhiển thị một ảnh cụ thểGET/photos/. id/editphotos#editreturn form HTML để chỉnh sửa ảnhPATCH/PUT/photos/. idphotos#updatecập nhật một ảnh cụ thể XÓA/ảnh/. idphotos#destroyxóa một ảnh cụ thểVì bộ định tuyến sử dụng động từ HTTP và URL để khớp với các yêu cầu gửi đến, bốn URL ánh xạ tới bảy hành động khác nhau Các tuyến đường ray được khớp theo thứ tự chúng được chỉ định, vì vậy nếu bạn có một 37 phía trên một 38 thì tuyến hành động của 11 cho dòng 19 sẽ được khớp trước dòng 41. Để khắc phục điều này, hãy di chuyển dòng 41 lên trên dòng 19 để nó được khớp trước2. 3 Trình trợ giúp đường dẫn và URLTạo một tuyến đường tháo vát cũng sẽ hiển thị một số trình trợ giúp cho bộ điều khiển trong ứng dụng của bạn. Trong trường hợp của 37
Mỗi trình trợ giúp này có một trình trợ giúp 57 tương ứng (chẳng hạn như 58) trả về cùng một đường dẫn có tiền tố là máy chủ, cổng và tiền tố đường dẫn hiện tạiNếu bạn cần tạo các tuyến đường cho nhiều tài nguyên, bạn có thể tiết kiệm một chút công việc nhập liệu bằng cách xác định tất cả chúng bằng một lệnh gọi duy nhất tới 19 5Bản saoĐiều này hoạt động chính xác giống như 6Bản sao2. 5 tài nguyên số ítĐôi khi, bạn có một tài nguyên mà khách hàng luôn tìm kiếm mà không cần tham chiếu ID. Ví dụ: bạn muốn 60 luôn hiển thị hồ sơ của người dùng hiện đang đăng nhập. Trong trường hợp này, bạn có thể sử dụng một tài nguyên duy nhất để ánh xạ 60 (chứ không phải 62) với hành động 11 1Bản saoVượt qua một 64 để 65 sẽ mong đợi một định dạng 66. Khi sử dụng một 67, tùy chọn 65 nên được thay thế bằng 69. Khi sử dụng một 64 mà không có một 71, tùy chọn 65 nên được thay thế bằng 73 2Bản saoCon đường tháo vát này 3Bản saotạo sáu tuyến đường khác nhau trong ứng dụng của bạn, tất cả ánh xạ tới bộ điều khiển 74HTTP VerbPathController#ActionUsed forGET/geocoder/newgeocoders#newtrả lại biểu mẫu HTML để tạo trình mã hóa địa lýPOST/geocodergeocoders#createtạo trình mã hóa địa lý mớiGET/geocodergeocoders#showdisplay tài nguyên trình mã hóa địa lý duy nhấtGET/geocoder/editgeocoders#editreturn biểu mẫu HTML để chỉnh sửa trình mã hóa địa lýPATCH/PUT Bởi vì bạn có thể muốn sử dụng cùng một bộ điều khiển cho một tuyến đường số ít ( 75) và tuyến đường số nhiều ( 76), các tài nguyên số ít ánh xạ tới các bộ điều khiển số nhiều. Vì vậy, ví dụ, 77 và 37 tạo cả tuyến đường số ít và số nhiều ánh xạ tới cùng một bộ điều khiển ( 79)Một tuyến đường tháo vát duy nhất tạo ra những người trợ giúp này
Cuộc gọi đến 86 là cần thiết để chuyển đổi các phiên bản của 87 thành các tuyến thông qua nhận dạng bản ghiGiống như với các tài nguyên số nhiều, các trình trợ giúp tương tự kết thúc bằng 57 cũng sẽ bao gồm tiền tố máy chủ, cổng và đường dẫn2. 6 Không gian tên điều khiển và định tuyếnBạn có thể muốn tổ chức các nhóm bộ điều khiển trong một không gian tên. Thông thường nhất, bạn có thể nhóm một số bộ điều khiển quản trị trong một không gian tên 89 và đặt các bộ điều khiển này trong thư mục 90. Bạn có thể định tuyến đến một nhóm như vậy bằng cách sử dụng khối 91 0Bản saoĐiều này sẽ tạo một số tuyến đường cho từng bộ điều khiển 92 và 93. Đối với 94, Rails sẽ tạoHTTP VerbPathController#ActionNamed Route HelperGET/admin/articlesadmin/articles#indexadmin_articles_pathGET/admin/articles/newadmin/articles#newnew_admin_article_pathPOST/admin/articlesadmin/articles#createadmin_articles_pathGET/admin/articles/. idadmin/articles#showadmin_article_path(. id) NHẬN/quản trị viên/bài viết/. id/editadmin/articles#editedit_admin_article_path(. id)PATCH/PUT/admin/bài viết/. idadmin/articles#updateadmin_article_path(. id)XÓA/quản trị viên/bài viết/. idadmin/articles#destroyadmin_article_path(. Tôi)Thay vào đó, nếu bạn muốn định tuyến 95 (không có tiền tố 96) đến 94, bạn có thể chỉ định mô-đun bằng khối 98 1Bản saoĐiều này cũng có thể được thực hiện cho một tuyến đường duy nhất 2Bản saoThay vào đó, nếu bạn muốn định tuyến 99 đến 00 (không có tiền tố mô-đun 89), bạn có thể chỉ định đường dẫn bằng khối 98 3Bản saoĐiều này cũng có thể được thực hiện cho một tuyến đường duy nhất 4Bản saoTrong cả hai trường hợp này, những người trợ giúp tuyến đường được đặt tên vẫn giữ nguyên như thể bạn không sử dụng 98. Trong trường hợp cuối cùng, các đường dẫn sau ánh xạ tới 00HTTP VerbPathController#ActionNamed Route HelperGET/admin/articlesarticles#indexarticles_pathGET/admin/articles/newarticles#newnew_article_pathPOST/admin/articlesarticles#createarticles_pathGET/admin/articles/. idarticles#showarticle_path(. id) NHẬN/quản trị viên/bài viết/. id/editarticles#editedit_article_path(. id)PATCH/PUT/admin/bài viết/. idarticles#updatearticle_path(. id)XÓA/quản trị viên/bài viết/. idarticles#destroyarticle_path(. Tôi)Nếu bạn cần sử dụng một không gian tên bộ điều khiển khác bên trong khối 91, bạn có thể chỉ định đường dẫn bộ điều khiển tuyệt đối, e. g. 062. 7 tài nguyên lồng nhauThông thường có các tài nguyên là con hợp lý của các tài nguyên khác. Ví dụ: giả sử ứng dụng của bạn bao gồm các mô hình này 5Bản saoCác tuyến đường lồng nhau cho phép bạn nắm bắt mối quan hệ này trong quá trình định tuyến của mình. Trong trường hợp này, bạn có thể bao gồm khai báo tuyến đường này 6Bản saoNgoài các tuyến đường dành cho tạp chí, khai báo này cũng sẽ định tuyến quảng cáo đến một 07. URL quảng cáo yêu cầu tạp chíHTTP VerbPathController#ActionUsed forGET/tạp chí/. magazine_id/adsads#indexhiển thị danh sách tất cả quảng cáo cho một tạp chí cụ thểGET/magazines/. magazine_id/ads/newads#newreturn một biểu mẫu HTML để tạo quảng cáo mới thuộc một tạp chí cụ thểPOST/magazines/. magazine_id/adsads#createtạo quảng cáo mới thuộc về một tạp chí cụ thểGET/magazines/. tạp chí_id/quảng cáo/. idads#showhiển thị một quảng cáo cụ thể thuộc về một tạp chí cụ thểGET/magazines/. tạp chí_id/quảng cáo/. id/editads#editreturn biểu mẫu HTML để chỉnh sửa quảng cáo thuộc một tạp chí cụ thểPATCH/PUT/magazines/. tạp chí_id/quảng cáo/. idads#updateupdate một quảng cáo cụ thể thuộc về một tạp chí cụ thể DELETE/magazines/. tạp chí_id/quảng cáo/. idads#destroyxóa một quảng cáo cụ thể thuộc về một tạp chí cụ thểĐiều này cũng sẽ tạo các trình trợ giúp định tuyến như 08 và 09. Những người trợ giúp này lấy một phiên bản Tạp chí làm tham số đầu tiên ( 10)2. 7. 1 Giới hạn đối với NestingBạn có thể lồng các tài nguyên vào các tài nguyên lồng nhau khác nếu muốn. Ví dụ 7Bản saoTài nguyên được lồng sâu nhanh chóng trở nên cồng kềnh. Ví dụ, trong trường hợp này, ứng dụng sẽ nhận ra các đường dẫn như 8Bản saoTrình trợ giúp định tuyến tương ứng sẽ là 11, yêu cầu bạn chỉ định các đối tượng ở cả ba cấp độ. Thật vậy, tình huống này đủ khó hiểu đến mức một bài báo nổi tiếng của Jamis Buck đề xuất một quy tắc ngón tay cái để thiết kế Rails tốtTài nguyên không bao giờ được lồng sâu hơn 1 cấp 2. 7. 2 Làm Tổ NôngMột cách để tránh lồng sâu (như đã đề xuất ở trên) là tạo các hành động bộ sưu tập nằm trong phạm vi cấp độ gốc, để hiểu được cấu trúc phân cấp, nhưng không lồng các hành động thành viên. Nói cách khác, chỉ xây dựng các tuyến đường với lượng thông tin tối thiểu để xác định duy nhất tài nguyên, như thế này 9Bản saoÝ tưởng này tạo ra sự cân bằng giữa các tuyến mô tả và lồng sâu. Có tồn tại cú pháp tốc ký để đạt được điều đó, thông qua tùy chọn 12 0Bản saoĐiều này sẽ tạo ra các tuyến đường chính xác giống như ví dụ đầu tiên. Bạn cũng có thể chỉ định tùy chọn 12 trong tài nguyên gốc, trong trường hợp đó, tất cả các tài nguyên lồng nhau sẽ cạn 1Bản saoTài nguyên bài viết ở đây sẽ có các tuyến sau được tạo cho nó HTTP VerbPathController#ActionNamed Route HelperGET/articles/. bài viết_id/bình luận(. định dạng)bình luận#indexarticle_comments_pathPOST/articles/. bài viết_id/bình luận(. định dạng)bình luận#createarticle_comments_pathGET/articles/. article_id/bình luận/mới(. định dạng)bình luận#newnew_article_comment_pathGET/bình luận/. id/chỉnh sửa (. định dạng)bình luận#editedit_comment_pathGET/bình luận/. Tôi(. định dạng)bình luận#showcomment_pathPATCH/PUT/bình luận/. Tôi(. định dạng)bình luận#updatecomment_pathDELETE/bình luận/. Tôi(. định dạng)bình luận#destroycomment_pathGET/articles/. bài viết_id/trích dẫn(. định dạng)quotes#indexarticle_quotes_pathPOST/articles/. bài viết_id/trích dẫn(. định dạng)quotes#createarticle_quotes_pathGET/articles/. article_id/quotes/new(. định dạng)quotes#newnew_article_quote_pathGET/quotes/. id/chỉnh sửa (. định dạng)quotes#editedit_quote_pathGET/quotes/. Tôi(. định dạng)quotes#showquote_pathPATCH/PUT/quotes/. Tôi(. định dạng)quotes#updatequote_pathDELETE/quotes/. Tôi(. định dạng)quotes#destroyquote_pathGET/articles/. article_id/bản nháp(. định dạng)bản nháp#indexarticle_drafts_pathPOST/articles/. article_id/bản nháp(. định dạng)bản thảo#createarticle_drafts_pathGET/articles/. article_id/bản nháp/mới(. format)drafts#newnew_article_draft_pathGET/drafts/. id/chỉnh sửa (. format)drafts#editedit_draft_pathGET/drafts/. Tôi(. định dạng)bản nháp#showdraft_pathPATCH/PUT/bản nháp/. Tôi(. format)drafts#updatedraft_pathDELETE/drafts/. Tôi(. định dạng)bản nháp#destroydraft_pathGET/bài viết(. định dạng)articles#indexarticles_pathPOST/articles(. định dạng)articles#createarticles_pathGET/articles/new(. định dạng)bài viết#newnew_article_pathGET/articles/. id/chỉnh sửa (. định dạng)bài viết#editedit_article_pathGET/articles/. Tôi(. định dạng)bài viết#showarticle_pathPATCH/PUT/bài viết/. Tôi(. định dạng)articles#updatearticle_pathDELETE/articles/. Tôi(. định dạng)bài viết#destroyarticle_pathPhương pháp 14 của DSL tạo ra một phạm vi bên trong mà mọi lồng đều nông. Điều này tạo ra các tuyến đường giống như ví dụ trước 2Bản saoCó hai tùy chọn cho 98 để tùy chỉnh các tuyến đường cạn. 16 tiền tố đường dẫn thành viên với tham số được chỉ định 3Bản saoTài nguyên nhận xét ở đây sẽ có các tuyến sau được tạo cho nó HTTP VerbPathController#ActionNamed Route HelperGET/articles/. bài viết_id/bình luận(. định dạng)bình luận#indexarticle_comments_pathPOST/articles/. bài viết_id/bình luận(. định dạng)bình luận#createarticle_comments_pathGET/articles/. article_id/bình luận/mới(. định dạng)bình luận#newnew_article_comment_pathGET/sekret/comments/. id/chỉnh sửa (. định dạng)bình luận#editedit_comment_pathGET/sekret/comments/. Tôi(. định dạng)bình luận#showcomment_pathPATCH/PUT/sekret/bình luận/. Tôi(. định dạng)bình luận#updatecomment_pathDELETE/sekret/comments/. Tôi(. định dạng)bình luận#destroycomment_pathTùy chọn 17 thêm tham số đã chỉ định vào trình trợ giúp tuyến đường được đặt tên 4Bản saoTài nguyên nhận xét ở đây sẽ có các tuyến sau được tạo cho nó HTTP VerbPathController#ActionNamed Route HelperGET/articles/. bài viết_id/bình luận(. định dạng)bình luận#indexarticle_comments_pathPOST/articles/. bài viết_id/bình luận(. định dạng)bình luận#createarticle_comments_pathGET/articles/. article_id/bình luận/mới(. định dạng)bình luận#newnew_article_comment_pathGET/bình luận/. id/chỉnh sửa (. định dạng)bình luận#editedit_sekret_comment_pathGET/bình luận/. Tôi(. định dạng)bình luận#showsekret_comment_pathPATCH/PUT/bình luận/. Tôi(. format)comments#updatesekret_comment_pathDELETE/comments/. Tôi(. định dạng)bình luận#destroysekret_comment_path2. 8 mối quan tâm về định tuyếnMối quan tâm về định tuyến cho phép bạn khai báo các tuyến phổ biến có thể được sử dụng lại bên trong các tài nguyên và tuyến khác. Để xác định mối quan tâm, hãy sử dụng khối 18 5Bản saoNhững mối quan tâm này có thể được sử dụng trong các tài nguyên để tránh trùng lặp mã và chia sẻ hành vi trên các tuyến 6Bản saoỞ trên là tương đương với 7Bản saoBạn cũng có thể sử dụng chúng ở bất cứ đâu bằng cách gọi tới số 19. Ví dụ: trong khối 98 hoặc 91 8Bản sao2. 9 Tạo đường dẫn và URL từ các đối tượngNgoài việc sử dụng trình trợ giúp định tuyến, Rails cũng có thể tạo đường dẫn và URL từ một mảng tham số. Ví dụ: giả sử bạn có tập hợp các tuyến đường này 6Bản saoKhi sử dụng 22, bạn có thể chuyển các trường hợp của 23 và 24 thay vì ID số 0Bản saoBạn cũng có thể sử dụng 25 với một tập hợp các đối tượng và Rails sẽ tự động xác định tuyến đường bạn muốn 1Bản saoTrong trường hợp này, Rails sẽ thấy rằng 26 là một 23 và 28 là một 24 và do đó sẽ sử dụng trình trợ giúp 22. Trong những người trợ giúp như 31, bạn chỉ có thể chỉ định đối tượng thay cho cuộc gọi đầy đủ 25 2Bản saoNếu bạn chỉ muốn liên kết đến một tạp chí 3Bản saoĐối với các hành động khác, bạn chỉ cần chèn tên hành động làm phần tử đầu tiên của mảng 4Bản saoĐiều này cho phép bạn xử lý các phiên bản mô hình của mình dưới dạng URL và là một lợi thế chính khi sử dụng kiểu tháo vát 2. 10 Thêm nhiều hành động RESTfulBạn không bị giới hạn trong bảy tuyến mà định tuyến RESTful tạo theo mặc định. Nếu muốn, bạn có thể thêm các tuyến bổ sung áp dụng cho bộ sưu tập hoặc từng thành viên của bộ sưu tập 2. 10. 1 Thêm tuyến thành viênĐể thêm một tuyến đường thành viên, chỉ cần thêm một khối 33 vào khối tài nguyên 5Bản saoĐiều này sẽ nhận ra 34 bằng GET và định tuyến đến hành động 35 của 79, với giá trị id tài nguyên được chuyển vào 37. Nó cũng sẽ tạo các trình trợ giúp 38 và 39Trong khối các tuyến thành viên, mỗi tên tuyến chỉ định động từ HTTP sẽ được nhận dạng. Bạn có thể sử dụng ________ 141, ________ 841, ________ 842, _______ 843 hoặc 44 tại đây. Nếu bạn không có nhiều tuyến đường 33, bạn cũng có thể chuyển 46 đến một tuyến đường, loại bỏ khối 6Bản saoBạn có thể bỏ tùy chọn 46, tùy chọn này sẽ tạo cùng một tuyến thành viên ngoại trừ giá trị id tài nguyên sẽ có sẵn trong 48 thay vì 37. Người trợ giúp định tuyến cũng sẽ được đổi tên từ 38 và 39 thành 52 và 532. 10. 2 Thêm tuyến thu gomĐể thêm tuyến đường vào bộ sưu tập, hãy sử dụng khối 54 7Bản saoĐiều này sẽ cho phép Rails nhận ra các đường dẫn như 55 với GET và định tuyến tới hành động 56 của 79. Nó cũng sẽ tạo các trình trợ giúp định tuyến 58 và 59Giống như với các tuyến đường thành viên, bạn có thể chuyển 46 đến một tuyến đường 8Bản saoNếu bạn đang xác định các tuyến tài nguyên bổ sung có ký hiệu làm đối số vị trí đầu tiên, hãy lưu ý rằng nó không tương đương với việc sử dụng một chuỗi. Các biểu tượng suy ra các hành động của bộ điều khiển trong khi các chuỗi suy ra các đường dẫn 2. 10. 3 Thêm tuyến đường cho các hành động mới bổ sungĐể thêm một hành động mới thay thế bằng cách sử dụng phím tắt 46 9Bản saoĐiều này sẽ cho phép Rails nhận ra các đường dẫn như 62 bằng GET và định tuyến đến hành động 35 của 64. Nó cũng sẽ tạo các trình trợ giúp tuyến đường 65 và 66Nếu bạn thấy mình đang thêm nhiều hành động bổ sung vào một lộ trình tháo vát, thì đã đến lúc dừng lại và tự hỏi liệu bạn có đang ngụy trang cho sự hiện diện của một nguồn lực khác không Ngoài định tuyến tài nguyên, Rails còn hỗ trợ mạnh mẽ để định tuyến các URL tùy ý tới các hành động. Tại đây, bạn không nhận được các nhóm tuyến đường được tạo tự động bởi định tuyến tháo vát. Thay vào đó, bạn thiết lập từng tuyến đường riêng biệt trong ứng dụng của mình Mặc dù bạn thường nên sử dụng định tuyến tháo vát nhưng vẫn có nhiều nơi mà định tuyến đơn giản hơn sẽ phù hợp hơn. Không cần phải cố gắng sắp xếp mọi phần cuối cùng của ứng dụng của bạn vào một khuôn khổ tháo vát nếu điều đó không phù hợp Đặc biệt, định tuyến đơn giản giúp dễ dàng ánh xạ các URL cũ sang các hành động Rails mới 3. 1 tham số ràng buộcKhi bạn thiết lập một tuyến đường thông thường, bạn cung cấp một loạt ký hiệu mà Rails ánh xạ tới các phần của yêu cầu HTTP sắp tới. Ví dụ, hãy xem xét tuyến đường này 20Bản saoNếu một yêu cầu đến của 67 được xử lý theo tuyến này (vì nó không khớp với bất kỳ tuyến nào trước đó trong tệp), thì kết quả sẽ là gọi hành động 68 của 79 và để cung cấp tham số cuối cùng 70 dưới dạng 37. Tuyến này cũng sẽ định tuyến yêu cầu đến của 46 đến 73, vì 74 là tham số tùy chọn, được biểu thị bằng dấu ngoặc đơn3. 2 phân đoạn độngBạn có thể thiết lập bao nhiêu phân đoạn động trong một tuyến đường thông thường tùy thích. Bất kỳ phân đoạn nào cũng sẽ có sẵn cho hành động như một phần của 13. Nếu bạn thiết lập tuyến đường này 21Bản saoMột đường dẫn đến của 76 sẽ được gửi đến hành động 11 của 79. 37 sẽ là 70 và 81 sẽ là 82Theo mặc định, phân đoạn động không chấp nhận dấu chấm - điều này là do dấu chấm được sử dụng làm dấu phân cách cho các tuyến đường được định dạng. Nếu bạn cần sử dụng dấu chấm trong phân đoạn động, hãy thêm ràng buộc ghi đè điều này – ví dụ: 83 cho phép mọi thứ trừ dấu gạch chéo3. 3 đoạn tĩnhBạn có thể chỉ định các phân đoạn tĩnh khi tạo một tuyến đường bằng cách không thêm dấu hai chấm vào một phân đoạn 22Bản saoTuyến đường này sẽ phản hồi các đường dẫn như 84. Trong trường hợp này, 13 sẽ là 863. 4 Chuỗi truy vấn 13 cũng sẽ bao gồm bất kỳ tham số nào từ chuỗi truy vấn. Ví dụ, với tuyến đường này 23Bản saoĐường dẫn đến của 88 sẽ được gửi đến hành động 11 của bộ điều khiển 36. 13 sẽ là 863. 5 Xác định giá trị mặc địnhBạn có thể xác định giá trị mặc định trong một tuyến đường bằng cách cung cấp hàm băm cho tùy chọn 93. Điều này thậm chí áp dụng cho các thông số mà bạn không chỉ định là phân đoạn động. Ví dụ 24Bản saoRails sẽ khớp 94 với hành động 11 của 79 và đặt 97 thành 98Bạn cũng có thể sử dụng khối 99 để xác định giá trị mặc định cho nhiều mục 25Bản saoBạn không thể ghi đè giá trị mặc định thông qua các tham số truy vấn - điều này là vì lý do bảo mật. Các giá trị mặc định duy nhất có thể bị ghi đè là các phân đoạn động thông qua thay thế trong đường dẫn URL 3. 6 tuyến đường đặt tênBạn có thể chỉ định tên cho bất kỳ tuyến đường nào bằng tùy chọn 00 26Bản saoĐiều này sẽ tạo ra 01 và 02 như những người trợ giúp định tuyến được đặt tên trong ứng dụng của bạn. Gọi 01 sẽ trả về 04Bạn cũng có thể sử dụng điều này để ghi đè các phương thức định tuyến được xác định bởi tài nguyên bằng cách đặt các tuyến tùy chỉnh trước khi tài nguyên được xác định, như thế này 27Bản saoĐiều này sẽ xác định một phương thức 05 sẽ có sẵn trong bộ điều khiển, trình trợ giúp và chế độ xem sẽ đi đến một tuyến đường chẳng hạn như 06. Bên trong hành động 11 của 08, 09 sẽ chứa tên người dùng cho người dùng. Thay đổi 10 trong định nghĩa tuyến đường nếu bạn không muốn tên tham số của mình là 103. 7 ràng buộc động từ HTTPNói chung, bạn nên sử dụng các phương pháp ________ 141, ________ 843, ________ 842, _______ 841 và 44 để hạn chế lộ trình đến một động từ cụ thể. Bạn có thể sử dụng phương thức 17 với tùy chọn 18 để ghép nhiều động từ cùng một lúc 28Bản saoBạn có thể nối tất cả các động từ với một lộ trình cụ thể bằng cách sử dụng 19 29Bản saoĐịnh tuyến cả yêu cầu 27 và 28 cho một hành động có ý nghĩa bảo mật. Nói chung, bạn nên tránh chuyển tất cả các động từ thành một hành động trừ khi bạn có lý do chính đáng để 27 trong Rails sẽ không kiểm tra mã thông báo CSRF. Bạn không bao giờ được ghi vào cơ sở dữ liệu từ yêu cầu 27, để biết thêm thông tin, hãy xem hướng dẫn bảo mật về các biện pháp đối phó CSRF3. 8 ràng buộc phân đoạnBạn có thể sử dụng tùy chọn 24 để thực thi định dạng cho phân đoạn động 50Bản saoLộ trình này sẽ khớp với các đường dẫn như 25, nhưng không khớp với 26. Bạn có thể diễn đạt ngắn gọn hơn cùng một lộ trình theo cách này 51Bản sao 24 sử dụng các biểu thức chính quy với hạn chế là không thể sử dụng các ký tự biểu thức chính quy. Ví dụ: tuyến đường sau sẽ không hoạt động 52Bản saoTuy nhiên, lưu ý rằng bạn không cần sử dụng neo vì tất cả các tuyến đều được neo ở đầu và cuối Ví dụ: các route sau sẽ cho phép 92 với các giá trị 29 như 30 luôn bắt đầu bằng một số và 31 với các giá trị 29 như 33 không bao giờ bắt đầu bằng một số để chia sẻ không gian tên gốc 53Bản sao3. 9 ràng buộc dựa trên yêu cầuBạn cũng có thể hạn chế một tuyến đường dựa trên bất kỳ phương thức nào trên đối tượng Yêu cầu trả về một 64Bạn chỉ định ràng buộc dựa trên yêu cầu giống như cách bạn chỉ định ràng buộc phân đoạn 54Bản saoBạn cũng có thể chỉ định các ràng buộc bằng cách sử dụng khối 35 55Bản saoCác ràng buộc yêu cầu hoạt động bằng cách gọi một phương thức trên đối tượng Yêu cầu có cùng tên với khóa băm và sau đó so sánh giá trị trả về với giá trị băm. Do đó, các giá trị ràng buộc phải khớp với kiểu trả về của phương thức đối tượng Yêu cầu tương ứng. Ví dụ. 36 sẽ khớp với tên miền phụ 37 như mong đợi. Tuy nhiên, sử dụng ký hiệu 38 thì không, vì 39 trả về 40 dưới dạng ChuỗiCó một ngoại lệ cho ràng buộc 41. trong khi đó là một phương thức trên đối tượng Yêu cầu, nó cũng là một tham số tùy chọn ẩn trên mọi đường dẫn. Các ràng buộc phân đoạn được ưu tiên và ràng buộc 41 chỉ được áp dụng như vậy khi được thực thi thông qua hàm băm. Ví dụ: 43 sẽ khớp với 44 vì định dạng là tùy chọn theo mặc định. Tuy nhiên, bạn có thể sử dụng lambda như trong 45 và tuyến đường sẽ chỉ khớp với các yêu cầu JSON rõ ràng3. 10 ràng buộc nâng caoNếu bạn có ràng buộc nâng cao hơn, bạn có thể cung cấp một đối tượng đáp ứng 46 mà Rails nên sử dụng. Giả sử bạn muốn định tuyến tất cả người dùng trong danh sách hạn chế tới 47. bạn có thể làm 56Bản saoBạn cũng có thể chỉ định các ràng buộc dưới dạng lambda 57Bản saoCả phương thức 46 và lambda đều lấy đối tượng 49 làm đối số3. 10. 1 Các ràng buộc ở dạng khốiBạn có thể chỉ định các ràng buộc ở dạng khối. Điều này hữu ích khi bạn cần áp dụng cùng một quy tắc cho một số tuyến đường. Ví dụ 58Bản saoBạn cũng có thể sử dụng một 50 59Bản sao3. 11 Route Globling và Wildcard SegmentsToàn cầu hóa tuyến đường là một cách để chỉ định rằng một tham số cụ thể phải được khớp với tất cả các phần còn lại của tuyến đường. Ví dụ 60Bản saoLộ trình này sẽ khớp với 94 hoặc 52, đặt 53 thành 54 hoặc 55. Các phân đoạn có tiền tố là một ngôi sao được gọi là "phân đoạn ký tự đại diện"Các đoạn ký tự đại diện có thể xảy ra ở bất kỳ đâu trong một tuyến đường. Ví dụ 61Bản saosẽ khớp với 56 với ________ 957 bằng với ________ 958 và ________ 959 bằng với ________ 960Về mặt kỹ thuật, một tuyến đường thậm chí có thể có nhiều hơn một đoạn ký tự đại diện. Trình so khớp gán các phân đoạn cho các tham số theo cách trực quan. Ví dụ 62Bản saosẽ khớp với 61 với ________ 962 bằng với ________ 963 và ________ 964 bằng với ________ 965Bằng cách yêu cầu 66, 67 của bạn sẽ bằng với 68 với định dạng yêu cầu là JSON. Nếu bạn muốn 3 cái cũ. 0. x trở lại, bạn có thể cung cấp 69 như thế này 63Bản saoNếu bạn muốn bắt buộc phân đoạn định dạng để không thể bỏ qua nó, bạn có thể cung cấp 70 như thế này 64Bản sao3. 12 chuyển hướngBạn có thể chuyển hướng bất kỳ đường dẫn nào sang đường dẫn khác bằng cách sử dụng trình trợ giúp 71 trong bộ định tuyến của mình 65Bản saoBạn cũng có thể sử dụng lại các phân đoạn động từ đối sánh trong đường dẫn để chuyển hướng đến 66Bản saoBạn cũng có thể cung cấp một khối cho 71, nhận các tham số đường dẫn được ký hiệu và đối tượng yêu cầu 67Bản saoXin lưu ý rằng chuyển hướng mặc định là chuyển hướng 301 "Đã di chuyển vĩnh viễn". Hãy nhớ rằng một số trình duyệt web hoặc máy chủ proxy sẽ lưu trữ loại chuyển hướng này, khiến trang cũ không thể truy cập được. Bạn có thể sử dụng tùy chọn 73 để thay đổi trạng thái phản hồi 68Bản saoTrong tất cả các trường hợp này, nếu bạn không cung cấp máy chủ lưu trữ hàng đầu ( 74), Rails sẽ lấy những chi tiết đó từ yêu cầu hiện tạiThay vì Chuỗi như 75, tương ứng với hành động 20 trong 00, bạn có thể chỉ định bất kỳ ứng dụng Rack nào làm điểm cuối cho bộ so khớp 69Bản saoMiễn là 78 trả lời 79 và trả về một 80, bộ định tuyến sẽ không biết sự khác biệt giữa ứng dụng Rack và một hành động. Đây là cách sử dụng phù hợp của 19, vì bạn sẽ muốn cho phép ứng dụng Rack của mình xử lý tất cả các động từ khi nó cho là phù hợpĐối với những người tò mò, 75 thực sự mở rộng ra thành 83, trả về một ứng dụng Rack hợp lệVì procs/lambdas là các đối tượng đáp ứng với 79, nên bạn có thể triển khai các tuyến rất đơn giản (e. g. để kiểm tra sức khỏe) trực tuyến. ______985 Nếu bạn chỉ định một ứng dụng Rack làm điểm cuối cho một bộ đối sánh, hãy nhớ rằng tuyến đường sẽ không thay đổi trong ứng dụng nhận. Với lộ trình sau, ứng dụng Rack của bạn sẽ mong đợi lộ trình là 96 10Bản saoThay vào đó, nếu bạn muốn ứng dụng Rack của mình nhận các yêu cầu tại đường dẫn gốc, hãy sử dụng 87 11Bản sao3. 14 Sử dụng <%= link_to 'Patient Record', patient_path(@patient) %>
|