PARAM LÀ GÌ

  -  

Rack

Để hiểu phương pháp Rails diễn giải params, các bạn sẽ nên gọi mọi điều cơ bản của Rack cùng giải pháp Rails hệ trọng cùng với nó. Theo document của rack:

Raông xã provides a minimal interface between web servers that tư vấn Ruby & Ruby frameworks.To use Raông chồng, provide an “app”: an object that responds lớn the hotline method, taking the environment hash as a parameter, & returning an Array with three elements:

The HTTPhường response codeA Hash of headersThe response body, which must respond to each

Về cơ phiên bản thì Raông chồng đã nằm giữa website VPS cùng áp dụng Rails của chúng ta.

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

Nó dấn request trường đoản cú website server, đưa nó thành biến đổi env (Ruby hash) nhưng Rails rất có thể hiểuRails lấy đổi thay env đó, triển khai phần đông gì nó buộc phải với nó và trả về một mảng đơn giản quay trở về Raông xã với HTTPhường response code, headers với response body.Raông chồng mang mảng kia, gửi nó quay lại thành ý kiến HTTPhường. tương thích với đưa nó mang lại trình phê duyệt nhằm hiển thị.!

*

“params” là gì ?

Để hiểu rõ hơn về Việc params bắt nguồn từ đâu, bọn họ buộc phải nắm rõ hơn về nó. Có buộc phải là 1 trong Hash ? Method ? Thứ đọng gì khác ?

Cách tốt nhất để tìm ra điều đó là đặt binding.pry vào trong 1 controller action và nỗ lực tò mò xem nó có những chiếc gì.

Hãy mang 1 VD:

*

Sau Khi submit 1 demo form

*

Tiếp tục tra cứu hiểu:

params là một trong những method của lớp ActionController::StrongParameter.Mặc cho dù params được diễn đạt nlỗi là 1 hash, tuy vậy thữ ra nó là một trong những instance của lớp ActionControll::Paramameter.

*

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

params.require(:post).permit!Bên vào source code ActionControll::StrongParameter, các bạn sẽ tra cứu thấy params trong số ấy.

*

Nlỗi chúng ta thấy, params là 1 getter method của lớp ActionContoder::StrongParameter và nó trả về biến đổi instance
_params, là 1 instance của lớp ActionContoder::Paramameter.

Thoạt nhìn, điều này có vẻ ko hữu ích nhiều, nhưng lại vấn đề đó phân tích và lý giải vì sao params gồm sẵn mang đến chúng ta trong controller của họ. Kiểm tra console của các bạn sẽ cho chính mình biết nguyên do tại sao.

*

Chúng ta có quyền truy vấn vào params vày controller của chúng ta là descendants của ActionContoder::StrongParameter cùng kế thừa tất cả những instance methods của nó!

Trong lúc điều đó phân tích và lý giải bí hiểm params xuất hiện làm việc khắp vị trí, thì nó không phân tích và lý giải làm vậy nào nó để sở hữu được nó. Nếu các bạn như tôi, bạn muốn biết toàn thể mẩu chuyện. lấy một ví dụ, request.parameters là gì? Nó tới từ đâu?

params đến từ đâu

Sau Lúc tìm hiểu nhiều hơn thế về Rails, tôi vẫn thấy ActionControll::Metal. Về cơ bản, ActionControll::Metal là 1 trong những phiên bản form xương của ActionControll::Base.

Xem thêm: " Người Lập Bảng Tiếng Anh Là Gì, Người Lập Biểu Tiếng Anh Là Gì

Nếu bạn quan sát vào source code của nó, bạn sẽ tra cứu thấy một số tài liệu liên quan mang lại request tương tự như tập phù hợp các methods liên quan cho params.

*

Tại thời đặc điểm đó tôi bắt buộc kể rằng, nhằm đi sâu hơn vào Rails, tôi sẽ bao gồm một trình ghi staông chồng trace.

*

Lý vị tôi đề cập đến vấn đề đó là bởi vì các bạn sẽ thấy tất cả các methods được Điện thoại tư vấn lúc Rails nhận ra một biến hóa env từ Rachồng - cùng gồm RẤT NHIỀU. Nếu bạn có nhu cầu xem hồ hết thiết bị xẩy ra ẩn dưới hậu trường, hãy xem tính năng này.

*

Mặc dù nhật ký này rất tuyệt hảo và quái dị, nhưng mà chỉ gồm một vài ba mẫu cơ mà bọn họ cần phải lo ngại về paramsvới ActionContoder::Metal.

*

Các chiếc gồm liên quan được đánh màu xanh lam

*

ActionController::Metal#dispatch

*

ActionController::Metal::action

Điều mà lại staông chồng trace này nói là sau khi Rails được khởi chế tạo ra cùng với trở thành env, biến đó được truyền qua Rails. Tại một số trong những điểm, nó hướng về class method ActionControll::Metal::action. Bên trong thủ tục này, ActionContoder::Metal khởi sản xuất một instance bắt đầu của chính nó cùng call #dispatch, nó đặt
_request là một trong những instance bắt đầu của lớp ActionDispatch:: Request.

Xem thêm: Cách Xem Bản Đồ Quy Định Màu Sắc Trong Bản Vẽ Quy Hoạch, Quyết Định 21/2005/Qđ

ActionDispatch::Request là bối cảnh Rails sử dụng để thúc đẩy cùng với HTTPhường request (env) có bắt đầu tự Rachồng. trong số những cách tiến hành mà lại API này cung cấp là #parameters.