Params là gì

     

Rack

Để hiểu biện pháp Rails diễn giải params, bạn sẽ phải hiểu phần lớn điều cơ phiên bản của Rack và bí quyết Rails tương tác với nó. Theo document của rack:

Rack provides a minimal interface between website servers that tư vấn Ruby & Ruby frameworks.To use Rack, provide an “app”: an object that responds khổng lồ the hotline method, taking the environment hash as a parameter, and returning an Array with three elements:

The HTTP response codeA Hash of headersThe response body, which must respond to each

Về cơ phiên bản thì Rack sẽ nằm trong lòng web server và vận dụng Rails của bạn.Bạn đang xem: Param là gì

Nó nhận request từ web server, đưa nó thành phát triển thành env (Ruby hash) mà Rails hoàn toàn có thể hiểuRails lấy thay đổi env đó, tiến hành những gì nó đề nghị với nó cùng trả về một mảng đơn giản dễ dàng trở lại Rack cùng với HTTP response code, headers cùng response body.Rack đem mảng đó, chuyển nó quay lại thành ý kiến HTTP thích hợp và gửi nó mang lại trình ưng chuẩn để hiển thị.!


*

“params” là gì ?

Để nắm rõ hơn về câu hỏi params xuất phát từ đâu, chúng ta cần làm rõ hơn về nó. Gồm phải là 1 trong những Hash ? Method ? sản phẩm công nghệ gì khác ?

Cách tốt nhất để tra cứu ra vấn đề đó là để binding.pry vào trong 1 controller kích hoạt và nỗ lực tìm đọc xem nó có các cái gì.

Bạn đang xem: Params là gì

Hãy rước 1 VD:


*

*

Tiếp tục tìm hiểu:

params là 1 trong những method của lớp ActionController::StrongParameter.Mặc cho dù params được miêu tả như là một trong những hash, mà lại thữ ra nó là một trong instance của lớp ActionControll::Paramameter.


*

Nếu chúng ta không không còn xa lạ với ActionControll::StrongParameter, thì đấy là lớp cấp cho cho chúng ta nhiều bảo mật hơn và dùng để hạn chế đối với thông số đầu vào. Nếu như bạn đã từng thực hiện cú pháp này trước đây, bạn cũng có thể cảm ơn ActionContoder::StrongParameter:

params.require(:post).permit!Bên vào source code ActionControll::StrongParameter, bạn sẽ tìm thấy params trong đó.


*

Như chúng ta thấy, params là 1 trong getter method của lớp ActionContoder::StrongParameter và nó trả về biến chuyển instance _params, là một trong instance của lớp ActionContoder::Paramameter.

Thoạt nhìn, điều này có vẻ không có lợi nhiều, mà lại điều này phân tích và lý giải tại sao params tất cả sẵn cho bọn họ trong controller của bọn chúng ta. Khám nghiệm console của các bạn sẽ cho chúng ta biết tại sao tại sao.


Chúng ta bao gồm quyền truy cập vào params do controller của bọn họ là descendants của ActionContoder::StrongParameter với kế thừa tất cả các instance methods của nó!

Trong khi điều đó giải thích bí hiểm params có mặt ở khắp nơi, thì nó không lý giải làm thay nào nó để có được nó. Nếu như bạn như tôi, bạn có nhu cầu biết cục bộ câu chuyện. Ví dụ, request.parameters là gì? Nó đến từ đâu?

params tới từ đâu

Nếu chúng ta nhìn vào source code của nó, các bạn sẽ tìm thấy một vài tài liệu tương quan đến request cũng giống như tập hợp những methods liên quan đến params.

Xem thêm: Xử Phạt Hành Chính Tiếng Anh Là Gì : Định Nghĩa, Ví Dụ Anh Việt


Tại thời điểm đó tôi đề nghị đề cập rằng, để đi sâu rộng vào Rails, tôi đã bao gồm một trình ghi stack trace.


Lý vì tôi kể đến điều đó là vì vì các bạn sẽ thấy tất cả các methods được hotline khi Rails cảm nhận một thay đổi env từ bỏ Rack - và tất cả RẤT NHIỀU. Nếu bạn có nhu cầu xem số đông thứ xảy ra đằng sau hậu trường, hãy xem chiếc này.


Mặc cho dù nhật ký kết này rất ấn tượng và quỷ quái dị, tuy thế chỉ bao gồm một vài cái mà họ cần phải lo ngại về paramsvà ActionContoder::Metal.


ActionController::Metal::action

Điều mà stack trace này nói là sau thời điểm Rails được khởi sinh sản với đổi thay env, biến này được truyền qua Rails. Tại một số điểm, nó hướng tới class method ActionControll::Metal::action. Phía bên trong phương thức này, ActionContoder::Metal khởi tạo ra một instance mới của nó và hotline #dispatch, nó để _request là 1 trong instance new của lớp ActionDispatch:: Request.

Xem thêm: 10+ Mẹo Chữa Nấc Cụt Nhanh Bằng Vài Thực Phẩm Quen Thuộc, Mách Bạn Mẹo Hay Chữa Nấc Cụt Cho Người Lớn Tuổi

ActionDispatch::Request là giao diện Rails thực hiện để liên tưởng với HTTP request (env) có xuất phát từ Rack. Giữa những phương thức nhưng API này cung ứng là #parameters.


Leave a Reply Cancel reply

Your e-mail address will not be published. Required fields are marked *