Param là gì

Rack

Để phát âm giải pháp Rails diễn giải params, bạn sẽ buộc phải gọi rất nhiều điều cơ bạn dạng của Rachồng với bí quyết Rails thúc đẩy cùng với nó. Theo document của rack:

Rachồng provides a minimal interface between web servers that support Ruby & Ruby frameworks.To use Rachồng, provide an “app”: an object that responds khổng lồ the Call method, taking the environment hash as a parameter, and returning an Array with three elements:

The HTTPhường response codeA Hash of headersThe response toàn thân, which must respond khổng lồ each

Về cơ phiên bản thì Raông chồng đang nằm trong lòng web VPS với vận dụng Rails của bạn.

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

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

*

“params” là gì ?

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

Cách tốt nhất có thể để đưa ra vấn đề đó là đặt binding.pry vào một controller action và cố gắng tìm hiểu coi nó tất cả các cái gì.

Hãy đem 1 VD:

*

Sau Lúc submit 1 chạy thử form

*

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

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

*

Nếu bạn ko thân thuộc với ActionControll::StrongParameter, thì đó là lớp cung cấp cho chúng ta nhiều bảo mật rộng với dùng để ngăn cản so với tsi số nguồn vào. Nếu các bạn đã từng có lần sử dụng cú pháp này trước đó, bạn có thể cảm ơn ActionContoder::StrongParameter:

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

*

Nhỏng chúng ta thấy, params là 1 getter method của lớp ActionContoder::StrongParameter cùng nó trả về đổi mới instance
_params, là một instance của lớp ActionContoder::Paramameter.

Thoạt chú ý, điều này có vẻ không bổ ích nhiều, tuy thế điều đó lý giải tại 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 lý do vì sao.

*

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

Trong lúc vấn đề này lý giải bí hiểm params có mặt ngơi nghỉ khắp nơi, thì nó ko lý giải có tác dụng cố kỉnh như thế nào nó để sở hữu được nó. Nếu các bạn như tôi, bạn muốn biết tổng thể mẩu chuyện. lấy một ví dụ, request.parameters là gì? Nó đến từ đâu?

params tới từ đâu

Sau lúc tìm hiểu nhiều hơn nữa về Rails, tôi đang thấy ActionControll::Metal. Về cơ bạn dạng, ActionControll::Metal là một trong phiên bạn dạng khung xương của ActionControll::Base.

Xem thêm: The Walking Dead: Season One Hack Cheat, The Walking Dead: Season One V 1

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

*

Tại thời điểm này tôi buộc phải nhắc rằng, nhằm đi sâu rộng vào Rails, tôi vẫn bao gồm một trình ghi staông chồng trace.

*

Lý vày tôi đề cập tới vấn đề này là bởi vì các bạn sẽ thấy tất cả các methods được hotline Khi Rails nhận ra một phát triển thành env từ Raông chồng - với gồm RẤT NHIỀU. Nếu bạn muốn coi rất nhiều máy xảy ra phía sau hậu trường, hãy coi cái này.

*

Mặc dù nhật cam kết này vô cùng tuyệt hảo với quái gở, cơ mà chỉ có một vài dòng nhưng mà bọn họ cần phải băn khoăn lo lắng về paramsvà ActionContoder::Metal.

*

Các mẫu gồm tương quan được sơn màu xanh lam

*

ActionController::Metal#dispatch

*

ActionController::Metal::action

Điều nhưng staông chồng trace này nói là sau khi Rails được khởi chế tác với biến hóa env, vươn lên là đó đượ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 trong cách thức này, ActionContoder::Metal khởi tạo ra một instance mới của chính nó với Gọi #dispatch, nó đặt
_request là 1 trong những instance bắt đầu của lớp ActionDispatch:: Request.

Xem thêm: Guardian Hack Tap Kich Và Bắn Cá, Crisis Action ( Tập Kích ) V4

ActionDispatch::Request là bối cảnh Rails áp dụng để can hệ với HTTP request (env) có xuất phát tự Rack. trong số những phương thức cơ mà API này cung ứng là #parameters.


Chuyên mục: Công Nghệ