MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

RoR :Mongoid i forma tworzą hasz

Gdy używasz form_for :

W Twoim przypadku Video Model. Aby zrozumieć konwencję Railsów:

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

Co skutkuje tagiem HTML, którego atrybut name to video[description] . Oznacza to, że po przesłaniu formularza wartość wprowadzona przez użytkownika będzie dostępna w kontrolerze jako parametry[:video][:description] .

params zmienna jest instancją ActiveSupport::HashWithIndifferentAccess , jak Hash z niewielką różnicą, zgodnie z dokumentacją:

Twoje params to coś takiego:

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

Gdzie "video" lub :video jest jednym z kluczy skrótu. A więc params[:video] jest odpowiednikiem params.fetch("video") która wartość to {"description"=>"Video desc"} . Jak widać wartość to kolejny skrót. Na koniec, aby uzyskać wartość opisu, musisz params[:video][:description] (Sposób Rails) lub params.fetch("video").fetch("description") , którego wartość to "Video desc" .

fetch to Ruby metoda Hash :"Zwraca wartość hash dla podanego klucza."

Biorąc to pod uwagę:

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

Łatwiej jest używać konwencji, ale na pewno możesz mieć params[:description] (na wszelki wypadek):

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

Zauważ, że używam tagu text_field_tag zamiast f.text_field . W tym przypadku nazwą tagu html będzie description w params Hash otrzymasz { "description" => 'Video desc" } ...

Zapoznaj się z dokumentacją Rails API aby zrozumieć różnych pomocników itp., a także przejrzyj dziennik serwera.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. argument zapytania mongoexport

  2. Odczytanie DBname.system.indexes nie powiodło się w klastrze Atlas przez mongobee po uzyskaniu połączenia

  3. MongoDB znajduje poddokument i sortuje wyniki

  4. Selektywna replikacja w mongodb

  5. Aktualizacja zagnieżdżonego rekordu w tablicy mongodb, gdy nie znasz indeksu dokumentu