Rack

Để phát âm bí quyết Rails diễn giải params, các bạn sẽ yêu cầu phát âm phần đa điều cơ bạn dạng của Raông xã và phương pháp Rails hệ trọng với nó. Theo document của rack:

Rachồng provides a minimal interface between website servers that tư vấn Ruby & Ruby frameworks.To use Raông chồng, provide an “app”: an object that responds to lớn the điện thoại tư vấn method, taking the environment hash as a parameter, và returning an Array with three elements:

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

Về cơ bạn dạng thì Rachồng sẽ nằm trong lòng website server và vận dụng Rails của công ty.

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

Nó nhận request trường đoản cú website hệ thống, đưa nó thành trở nên env (Ruby hash) cơ mà Rails rất có thể hiểuRails đem đổi mới env kia, tiến hành số đông gì nó cần cùng với nó cùng trả về một mảng dễ dàng quay trở lại Rachồng với HTTP.. response code, headers cùng response body.Raông chồng mang mảng đó, chuyển nó quay lại thành đánh giá HTTP phù hợp và đưa nó mang lại trình duyệt y nhằm hiển thị.!

*

“params” là gì ?

Để làm rõ rộng về câu hỏi params xuất phát từ đâu, chúng ta đề nghị làm rõ rộng về nó. Có cần là 1 Hash ? Method ? Thđọng gì không giống ?

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

Hãy mang 1 VD:

*

Sau khi submit 1 chạy thử form

*

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

params là một method của lớp ActionController::StrongParameter.Mặc mặc dù params được biểu hiện nlỗi là 1 trong hash, nhưng mà thữ ra nó là một instance của lớp ActionControll::Paramameter.

*

Nếu chúng ta ko thân quen với ActionControll::StrongParameter, thì đó là lớp cấp mang đến chúng ta các bảo mật thông tin rộng với dùng để ngăn cản so với tyêu thích số đầu vào. Nếu chúng ta đã có lần áp dụng cú pháp này trước đây, chúng ta 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 các số đó.

*

Nhỏng bạn thấy, params là 1 trong getter method của lớp ActionContoder::StrongParameter với nó trả về phát triển thành instance
_params, là 1 trong instance của lớp ActionContoder::Paramameter.

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

*

Chúng ta gồm quyền truy vấn vào params do controller của bọn họ là descendants của ActionContoder::StrongParameter với kế thừa toàn bộ những instance methods của nó!

Trong Lúc điều đó giải thích bí ẩn params có mặt ngơi nghỉ khắp vị trí, thì nó không giải thích làm cho ráng làm sao nó để có được nó. Nếu bạn nlỗi tôi, bạn có nhu cầu biết cục bộ mẩu truyện. lấy ví dụ, request.parameters là gì? Nó đến từ đâu?

params đến từ đâu

Sau khi khám phá nhiều hơn về Rails, tôi vẫn thấy ActionControll::Metal. Về cơ bạn dạng, ActionControll::Metal là 1 phiên bạn dạng size xương của ActionControll::Base.

Xem thêm: Webdrama Là Gì ? Giải Nghĩa Chi Tiết Về Cụm Từ "Web Drama" Giải Nghĩa Chi Tiết Về Cụm Từ Web Drama

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

*

Tại thời điểm đó tôi đề xuất nói rằng, nhằm đi sâu rộng vào Rails, tôi sẽ bao gồm một trình ghi staông chồng trace.

*

Lý vày tôi đề cùa đến điều này là chính vì bạn sẽ thấy tất cả những methods được gọi Lúc Rails nhận thấy một đổi mới env trường đoản cú Rachồng - với gồm RẤT NHIỀU. Nếu bạn muốn coi mọi thứ xẩy ra phía sau hậu ngôi trường, hãy coi điều này.

*

Mặc cho dù nhật ký kết này rất tuyệt vời cùng lạ thường, tuy nhiên chỉ gồm một vài ba loại mà bọn họ cần phải lo lắng về paramscùng ActionContoder::Metal.

*

Các chiếc có tương quan được sơn màu xanh lam

*

ActionController::Metal#dispatch

*

ActionController::Metal::action

Điều nhưng stachồng trace này nói là sau khi Rails được khởi tạo thành với biến env, trở nên này được truyền qua Rails. Tại một vài điểm, nó hướng tới class method ActionControll::Metal::action. Bên vào cách thức này, ActionContoder::Metal khởi tạo nên một instance mới của nó và call #dispatch, nó đặt
_request là một trong instance new của lớp ActionDispatch:: Request.

Xem thêm: Actinic Keratosis Là Gì - Định Nghĩa Của Actinic Keratosis

ActionDispatch::Request là bối cảnh Rails thực hiện nhằm địa chỉ với HTTPhường. request (env) gồm nguồn gốc từ Rachồng. trong những phương thức nhưng mà API này cung ứng là #parameters.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *