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

Rails + MongoMapper + pomoc dotycząca formularza EmbeddedDocument

Oto podstawowe podejście, które zastosowałem w jednej z moich aplikacji. Problem ma wiele odpowiedzi - problem to dokument, odpowiedź to osadzony dokument. Możesz użyć linku „dodaj odpowiedź”, aby wygenerować kolejne pole odpowiedzi, a linku „usuń”, aby je usunąć.

_form.html.erb:

<% form_for @problem do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :content %><br />
    <%= f.text_area :content, :size => '50x7' %>
  </p>

  ...etc...

  <%= add_answer_link "(add answer)" %>
  <div id="answers">
    <%= render :partial => 'answer', :collection => @problem.answers %>
  </div>

  <p><%= f.submit "Submit" %></p>
<% end %>

_answer.html.erb:

<div class="answer">
  <% fields_for 'problem[answers]', answer, :index => nil do |f| -%>
    <%= f.label :content, "Answer #{answer.id}:" %>
    <%= f.text_field :content, :size => 50 %>
    <%= link_to_function "(remove)", "$(this).up('.answer').remove()" %>
  <% end -%>
</div>

problemy_helper.rb

module ProblemsHelper
  def add_answer_link(name)
    link_to_function name do |page|
      page.insert_html :bottom, "answers", :partial => 'answer', :object => Answer.new
    end
  end
end

Wyciąłem kilka drobnych fragmentów implementacji, ale to powinno działać.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Schema Design — wiele małych dokumentów czy mniej dużych dokumentów?

  2. Nie chcę zaczynać mongod od `sudo mongod`

  3. MongoDB kontra DynamoDB:co musisz wiedzieć

  4. Nie można połączyć się z MongoDB Atlas (queryTxt ETIMEOUT)

  5. Mongoose findOneAndUpdate i upsert nie zwraca żadnych błędów, żadnych dokumentów nie ma wpływu