Giá đỡ
Để hiểu cách Rails diễn giải các thông số, bạn sẽ phải hiểu những điều cơ bản về Rack và cách Rails tương tác với nó. Theo tài liệu của rack:
Rack phân phối một giao diện tối thiểu giữa các máy chủ web hỗ trợ các phạm vi Ruby và Ruby. Để sử dụng Rack, hãy phân phối một “ứng dụng”: một nhân vật phản hồi phương thức gọi, lấy băm môi trường làm thông số và trả về một Mảng có ba phần tử:
Mã phản hồi HTTP Một băm tiêu đề Nội dung phản hồi, phải phản hồi từng
Về cơ bản, Rack sẽ nằm giữa máy chủ web và ứng dụng Rails của bạn.
Đang xem: Param là gì
Nó nhận yêu cầu từ máy chủ web, chuyển nó thành một biến env (Ruby hash) nhưng mà Rails có thể hiểu Rails nhận biến env đó, thực hiện những gì cần làm với nó và trả về một mảng đơn giản trở lại Rack với HTTP mã phản hồi, tiêu đề và nội dung phản hồi.
“Params” là gì?
Để hiểu rõ hơn thông số tới từ đâu, chúng ta cần hiểu rõ hơn về nó. Nó có phải là một Hash ko? Phương pháp ? Còn gì nữa?
Cách tốt nhất để tìm ra điều này là đặt bind.pry trong một hành động của bộ điều khiển và quyết tâm tìm hiểu xem nó hoạt động như thế nào.
Hãy lấy 1 VD:
Sau lúc gửi mẫu rà soát
Tiếp tục học:
thông số là một phương thức của lớp ActionController :: StrongParameter. Mặc dù các thông số được trình diễn dưới dạng băm, nhưng nó thực sự là một trình bày của lớp ActionController :: Paramameter.
Xem thêm: Cách đọc sách điện tử Định dạng Epub là gì và Cách mở chúng, Cách sử dụng Epub
Nếu bạn chưa quen với ActionController :: StrongParameter thì đây là một lớp giúp chúng ta bảo mật hơn và được sử dụng để hạn chế các thông số đầu vào. Nếu bạn đã sử dụng cú pháp này trước đây, bạn có thể cảm ơn ActionController :: StrongParameter:
params.require (: post) .permit! Bên trong mã nguồn ActionController :: StrongParameter, bạn sẽ tìm thấy các thông số trong đó.
Như bạn có thể thấy, thông số là một phương thức getter của lớp ActionController :: StrongParameter và nó trả về một biến trình bày.
_params, là một trình bày của lớp ActionController :: Paramameter.
Thoạt nhìn, điều này có vẻ ko nhiều, nhưng điều này giảng giải vì sao các thông số có sẵn cho chúng ta trong bộ điều khiển của chúng ta. Rà soát bảng điều khiển của bạn sẽ cho bạn biết lý do vì sao.
Chúng tôi có quyền truy cập vào các thông số vì bộ điều khiển của chúng tôi là hậu duệ của ActionController :: StrongParameter và kế thừa tất cả các phương thức trình bày của nó!
Mặc dù điều này giảng giải kín đáo về các params phổ quát, nhưng nó ko giảng giải làm thế nào để đạt được điều đó. Nếu bạn giống tôi, bạn muốn biết toàn thể câu chuyện. Ví dụ, request.parameters là gì? Nó tới từ đâu?
Params tới từ đâu?
Sau lúc tìm hiểu thêm về Rails, tôi đã xem qua ActionController :: Metal. Về cơ bản, ActionController :: Metal là một phiên bản khung của ActionController :: Base.
Xem thêm: Bộ Giấy Dán Nôi Cho Nhỏ Trai Cho Nhỏ ️ Nôi Cho Nhỏ Trai
Nếu bạn nhìn vào mã nguồn của nó, bạn sẽ tìm thấy một số tài liệu liên quan tới yêu cầu cũng như một các phương pháp liên quan tới các thông số.
Xem thêm: Đức Thánh Trần Triều: Đền thờ và Lời thề
Tại thời khắc này, tôi nên nói đến rằng, để đi sâu hơn vào Rails, tôi đã bao gồm một trình ghi theo dõi ngăn xếp.
Lý do tôi nói đến tới điều này là vì bạn sẽ thấy tất cả các phương thức được gọi lúc Rails thu được một biến env từ Rack – và có RẤT NHIỀU. Nếu bạn muốn xem mọi thứ diễn ra đằng sau hậu trường, hãy xem phần này.
Mặc dù bản ghi này rất ấn tượng và quái dị, nhưng chỉ có một vài dòng nhưng mà chúng ta cần phải lo lắng về các thông số và ActionController :: Metal.
Các dòng có liên quan được ghi lại bằng màu xanh lam
ActionController :: Metal # phái
ActionController :: Metal :: action
Điều nhưng mà dấu vết ngăn xếp này nói là sau lúc Rails được khởi tạo với biến env, thì biến đó sẽ được chuyển qua Rails. Tại một số điểm, nó được hướng tới phương thức lớp ActionController :: Metal :: action. Bên trong phương thức này, ActionController :: Metal khởi tạo một phiên bản mới của chính nó và gọi #dispatch, thiết lập
_request là một phiên bản mới của lớp ActionDispatch :: Request.
Xem thêm: 12 Cung Hoàng Đạo Nữ Tháng Sinh, Ngày Sinh 12 Cung Hoàng Đạo Chính Xác Năm 2020
ActionDispatch :: Request là giao diện nhưng mà Rails sử dụng để tương tác với các yêu cầu HTTP (env) bắt nguồn từ Rack. Một trong những phương pháp nhưng mà API này phân phối là #parameters.
Bạn thấy bài viết Param Là Gì ? Tham Số Và Đối Số Khác Nhau Như Thế Nào có khắc phục đươc vấn đề bạn tìm hiểu ko?, nếu ko hãy comment góp ý thêm về Param Là Gì ? Tham Số Và Đối Số Khác Nhau Như Thế Nào bên dưới để thpttranhungdao.edu.vn có thể thay đổi & cải thiện nội dung tốt hơn cho độc giả nhé! Cám ơn bạn đã ghé thăm Website Trường THPT Trần Hưng Đạo
Phân mục: Hỏi đáp
Nguồn: thpttranhungdao.edu.vn
Trả lời