MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

RoR :Mongoid dan bentuk membuat hash

Saat Anda menggunakan form_for :

Dalam kasus Anda, Video model. Untuk memahami konvensi Rails:

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

Yang menghasilkan tag html yang atribut namanya adalah video[description] . Artinya saat formulir dikirimkan, nilai yang dimasukkan oleh pengguna akan tersedia di pengontrol sebagai params[:video][:description] .

params variabel adalah turunan dari ActiveSupport::HashWithIndifferentAccess , seperti Hash dengan sedikit perbedaan, menurut dokumentasi:

params . Anda adalah sesuatu seperti:

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

Dimana "video" atau :video adalah salah satu kunci dari Hash. Jadi, params[:video] setara dengan params.fetch("video") yang nilainya {"description"=>"Video desc"} . Seperti yang Anda lihat, nilainya adalah Hash lain. Akhirnya untuk mendapatkan nilai deskripsi Anda harus params[:video][:description] (The Rails way) atau params.fetch("video").fetch("description") , yang nilainya "Video desc" .

fetch adalah metode Ruby dari Hash :"Mengembalikan nilai dari hash untuk kunci yang diberikan."

Mempertimbangkan hal ini:

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

Lebih mudah menggunakan konvensi, tetapi yang pasti Anda dapat memiliki params[:description] (untuk jaga-jaga):

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

Perhatikan bahwa saya menggunakan text_field_tag bukannya f.text_field . Dalam hal ini nama tag html akan menjadi description di params Hash Anda akan menerima { "description" => 'Video desc" } ...

Lihat dokumentasi Rails API untuk memahami helper yang berbeda, dll. Dan juga meninjau log server Anda.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Batasi agregasi dalam agregasi berkelompok

  2. Apakah mongodump mengunci database?

  3. Mongoose - Dapatkan daftar _id alih-alih array objek dengan _id

  4. Kueri bersarang luwak pada Model berdasarkan bidang model yang direferensikannya

  5. ID singkat yang mudah digunakan untuk mongo