MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

RoR:Mongoid và biểu mẫu tạo băm

Khi bạn đang sử dụng form_for :

Trong trường hợp của bạn, Video người mẫu. Để hiểu quy ước Rails:

<%=  form_for @video do |f| %>
...
<%= f.text_field :description %>
...

Điều này dẫn đến thẻ html có thuộc tính tên là video [description] . Điều này có nghĩa là khi biểu mẫu được gửi, giá trị do người dùng nhập sẽ có sẵn trong bộ điều khiển dưới dạng params [:video] [:description] .

params biến là một phiên bản của ActiveSupport::HashWithIndifferentAccess , giống như một Hash với một sự khác biệt nhỏ, theo tài liệu:

params của bạn là một cái gì đó giống như:

{"utf8"=>"✓",
 "_method"=>"post",
 "authenticity_token"=>"xxx",
 "video"=>
  {"description"=>"Video desc"}
}

Ở đâu "video" hoặc :video là một trong những chìa khóa của Hash. Vì vậy, params[:video] tương đương với params.fetch("video") giá trị nào là {"description"=>"Video desc"} . Như bạn có thể thấy giá trị là một Hash khác. Cuối cùng để nhận được giá trị của mô tả, bạn phải params[:video][:description] (The Rails way) hoặc params.fetch("video").fetch("description") , giá trị nào là "Video desc" .

fetch là một phương thức Ruby của Hash :"Trả về giá trị từ hàm băm cho khóa đã cho."

Tính đến điều này:

Video.new(params[:video]) = Video.new(:description => "Video desc") = Video.new(:description => params[:video][:description])

Việc sử dụng các quy ước sẽ dễ dàng hơn, nhưng chắc chắn rằng bạn có thể có params[:description] (đề phòng):

<%=  form_for @video do |f| %>
...
<%= text_field_tag :description %>
...

Lưu ý rằng tôi đang sử dụng text_field_tag thay vì f.text_field . Trong trường hợp này, tên thẻ html sẽ là description trong params Băm, bạn sẽ nhận được { "description" => 'Video desc" } ...

Hãy xem tài liệu API Rails để hiểu những người trợ giúp khác nhau, v.v. Và cũng có thể xem lại nhật ký máy chủ của bạn.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB cập nhật tài liệu khi đã tồn tại với ReactiveMongo

  2. Làm cách nào để hiển thị phương thức REST mới thông qua kho lưu trữ Spring Data MongoDB với siêu dữ liệu ALPS / HATEOAS?

  3. Cập nhật tài liệu con MongoDB khi tài liệu mẹ có thể không tồn tại

  4. Mongodb - toán tử cấp cao nhất không xác định:$ elemMatch

  5. Cách kết nối với MongoDB từ iOS (Swift)