Yêu cầu-html cookie
Bộ điều khiển hành động là C trong MVC. Sau khi bộ định tuyến đã xác định bộ điều khiển nào sẽ sử dụng cho yêu cầu, bộ điều khiển chịu trách nhiệm hiểu ý nghĩa của yêu cầu và tạo đầu ra phù hợp. May mắn thay, Trình điều khiển hành động thực hiện hầu hết các công việc cơ bản cho bạn và sử dụng các quy ước thông minh để làm cho điều này trở nên đơn giản nhất có thể Đối với hầu hết các ứng dụng RESTful thông thường, bộ điều khiển sẽ nhận yêu cầu (điều này vô hình đối với bạn với tư cách là nhà phát triển), tìm nạp hoặc lưu dữ liệu từ một mô hình và sử dụng chế độ xem để tạo đầu ra HTML. Nếu bộ điều khiển của bạn cần thực hiện mọi thứ hơi khác một chút, thì đó không phải là vấn đề, đây chỉ là cách phổ biến nhất để bộ điều khiển hoạt động Do đó, một bộ điều khiển có thể được coi là người trung gian giữa các mô hình và chế độ xem. Nó cung cấp dữ liệu mô hình cho chế độ xem, do đó, nó có thể hiển thị dữ liệu đó cho người dùng và nó lưu hoặc cập nhật dữ liệu người dùng vào mô hình Quy ước đặt tên của bộ điều khiển trong Rails ưu tiên số nhiều của từ cuối cùng trong tên của bộ điều khiển, mặc dù nó không bắt buộc (e. g. 9). Ví dụ: 0 thích hợp hơn 1, 2 thích hợp hơn 3 hoặc 4, v.v.Tuân theo quy ước này sẽ cho phép bạn sử dụng các trình tạo tuyến đường mặc định (e. g. 5, v.v.) mà không cần phải đủ điều kiện cho mỗi 6 hoặc 7 và sẽ duy trì việc sử dụng các trình trợ giúp định tuyến được đặt tên nhất quán trong suốt ứng dụng của bạn. Xem Bố cục và Hướng dẫn kết xuất để biết thêm chi tiếtQuy ước đặt tên của bộ điều khiển khác với quy ước đặt tên của các mô hình, dự kiến sẽ được đặt tên ở dạng số ít Bộ điều khiển là một lớp Ruby kế thừa từ 9 và có các phương thức giống như bất kỳ lớp nào khác. Khi ứng dụng của bạn nhận được yêu cầu, định tuyến sẽ xác định bộ điều khiển và hành động nào sẽ chạy, sau đó Rails tạo một phiên bản của bộ điều khiển đó và chạy phương thức có cùng tên với hành động 0Bản saoVí dụ: nếu người dùng truy cập 9 trong ứng dụng của bạn để thêm ứng dụng khách mới, Rails sẽ tạo một phiên bản của 0 và gọi phương thức 31 của nó. Lưu ý rằng phương thức trống từ ví dụ trên sẽ hoạt động tốt vì theo mặc định, Rails sẽ hiển thị chế độ xem 32 trừ khi hành động nói khác. Bằng cách tạo một 33 mới, phương thức 31 có thể làm cho biến đối tượng 35 có thể truy cập được trong dạng xem 8Bản saoHướng dẫn bố cục và kết xuất giải thích điều này chi tiết hơn 9 kế thừa từ 37, định nghĩa một số phương thức hữu ích. Hướng dẫn này sẽ đề cập đến một số trong số này, nhưng nếu bạn tò mò muốn xem có gì trong đó, bạn có thể xem tất cả chúng trong tài liệu API hoặc trong chính nguồn đóChỉ các phương thức công khai mới có thể gọi là hành động. Cách tốt nhất là giảm khả năng hiển thị của các phương pháp (với 38 hoặc 39) không nhằm mục đích hành động, như phương pháp phụ trợ hoặc bộ lọcMột số tên phương thức được dành riêng bởi Bộ điều khiển hành động. Việc vô tình xác định lại chúng dưới dạng hành động hoặc thậm chí là phương pháp phụ trợ có thể dẫn đến ____230. Nếu bạn giới hạn bộ điều khiển của mình chỉ với các hành động Định tuyến tài nguyên RESTful, bạn không cần phải lo lắng về điều này Nếu bạn phải sử dụng một phương thức dành riêng làm tên hành động, một giải pháp thay thế là sử dụng tuyến tùy chỉnh để ánh xạ tên phương thức dành riêng cho phương thức hành động không dành riêng của bạn Bạn có thể sẽ muốn truy cập dữ liệu do người dùng gửi hoặc các tham số khác trong hành động của bộ điều khiển của bạn. Có hai loại tham số có thể có trong một ứng dụng web. Đầu tiên là các tham số được gửi như một phần của URL, được gọi là tham số chuỗi truy vấn. Chuỗi truy vấn là mọi thứ sau "?" . Loại tham số thứ hai thường được gọi là dữ liệu POST. Thông tin này thường đến từ một biểu mẫu HTML đã được người dùng điền vào. Nó được gọi là dữ liệu POST vì nó chỉ có thể được gửi như một phần của yêu cầu HTTP POST. Rails không phân biệt giữa tham số chuỗi truy vấn và tham số POST và cả hai đều có sẵn trong hàm băm 31 trong bộ điều khiển của bạn 5Bản sao4. 1 Tham số băm và mảngHàm băm 31 không giới hạn ở các khóa và giá trị một chiều. Nó có thể chứa các mảng và giá trị băm lồng nhau. Để gửi một mảng giá trị, hãy thêm một cặp dấu ngoặc vuông trống "[]" vào tên khóa 7Bản saoURL thực tế trong ví dụ này sẽ được mã hóa thành "/clients?ids%5b%5d=1&ids%5b%5d=2&ids%5b%5d=3" vì các ký tự "[" và "]" không được phép trong URL. Hầu hết thời gian bạn không phải lo lắng về điều này vì trình duyệt sẽ mã hóa nó cho bạn và Rails sẽ tự động giải mã nó, nhưng nếu bạn thấy mình phải gửi các yêu cầu đó đến máy chủ theo cách thủ công thì bạn nên ghi nhớ điều này Giá trị của 33 bây giờ sẽ là 34. Lưu ý rằng giá trị tham số luôn là chuỗi; Theo mặc định, các giá trị như 35 hoặc 36 trong 31 được thay thế bằng 38 vì lý do bảo mật. Xem Hướng dẫn bảo mật để biết thêm thông tinĐể gửi hàm băm, bạn nhập tên khóa bên trong dấu ngoặc 4Bản saoKhi biểu mẫu này được gửi, giá trị của 39 sẽ là 60. Lưu ý hàm băm lồng nhau trong 61Đối tượng 31 hoạt động giống như Hash, nhưng cho phép bạn sử dụng các ký hiệu và chuỗi thay thế cho nhau làm khóa4. 2 tham số JSONNếu bạn đang viết một ứng dụng dịch vụ web, bạn có thể thấy thoải mái hơn khi chấp nhận các tham số ở định dạng JSON. Nếu tiêu đề "Content-Type" trong yêu cầu của bạn được đặt thành "application/json", Rails sẽ tự động tải các tham số của bạn vào hàm băm 31 mà bạn có thể truy cập như bình thườngVì vậy, ví dụ: nếu bạn đang gửi nội dung JSON này Bản saoBộ điều khiển của bạn sẽ nhận được 64 dưới dạng 65Ngoài ra, nếu bạn đã bật 66 trong trình khởi tạo hoặc gọi là 67 trong bộ điều khiển của mình, thì bạn có thể yên tâm bỏ qua phần tử gốc trong tham số JSON. Trong trường hợp này, các tham số sẽ được sao chép và bọc bằng một khóa được chọn dựa trên tên bộ điều khiển của bạn. Vì vậy, yêu cầu JSON ở trên có thể được viết là Bản saoVà, giả sử rằng bạn đang gửi dữ liệu tới 68, thì dữ liệu sẽ được gói trong khóa 69 như thế này 3Bản saoBạn có thể tùy chỉnh tên của khóa hoặc tham số cụ thể mà bạn muốn ngắt bằng cách tham khảo tài liệu API Hỗ trợ phân tích các tham số XML đã được trích xuất thành một viên ngọc có tên là 8004. 3 Tham số định tuyếnBăm 31 sẽ luôn chứa các khóa 7 và 803, nhưng bạn nên sử dụng các phương thức 804 và 805 thay vì truy cập các giá trị này. Bất kỳ tham số nào khác được xác định bởi định tuyến, chẳng hạn như 806, cũng sẽ khả dụng. Ví dụ: xem xét danh sách khách hàng trong đó danh sách có thể hiển thị khách hàng đang hoạt động hoặc không hoạt động. Chúng tôi có thể thêm một tuyến đường nắm bắt tham số 807 trong một URL "đẹp" 3Bản saoTrong trường hợp này, khi người dùng mở URL 808, thì 809 sẽ được đặt thành "hoạt động". Khi tuyến đường này được sử dụng, 810 cũng sẽ được đặt thành "bar", như thể nó được chuyển vào chuỗi truy vấn. Bộ điều khiển của bạn cũng sẽ nhận được 811 là "chỉ mục" và 812 là "máy khách"4. 4 { "name": "acme", "address": "123 Carrot Street" }
|