Ich baue einen einfachen einseitigen Einkaufswagen mit Rails und Javascript.Einkaufswagen mit vielen Eingaben number_field in Rails
Ich habe eine Datenbank mit meiner ~ 8 Produkte und das ist, wie meine Shopping-Seite wie folgt aussieht:
<%= form_for @order do |f| %>
<% @product.each do |product| %>
<%= f.number_field(:product, class: "order-list", name: "#{product.name}", data: {price: "#{product.price}"}, value: 0, in: 0..5) %>
<% end %>
<%= f.submit "Continue" %>
<% end %>
Wenn ich auf Senden klicken, erhalte ich diese params
{"utf8"=>"✓", "authenticity_token"=>"mkFBHjgsGZ/dwmQ+Ct6HzafLNwDQlVXOVTdsO97IUUrg7PV9HlpdzJa9Iy03I85t0Nx7dUBKuqZfuGmE700fFQ==", "NameofProduct1"=>"0", "NameofProduct2"=>"0", "NameofProduct3"=>"2", "NameofProduct4"=>"1", "NameofProduct5"=>"0", "commit"=>"Continue", "controller"=>"orders", "action"=>"create"}
Was ist der beste Weg, um ähnliche Einkaufswagen mit nur Eingabe Zahlenfelder zu behandeln? Wie geht man mit den Params um? Auf der Serverseite sollte ich mit allen Produkten eine Schleife machen, den Namen finden, ihn mit der Menge verschmelzen und in der Datenbank speichern? Ist es eine gute Idee, jedes Produkt als Objekt in einem Array zu speichern?
Auch, wie man mit dem Modell umgeht: um es nur params mit Wert mehr als 0 zu übergeben? Weil ich Zugang wie "NameofProductxxxx" habe.
In Zukunft möchte ich es DRY haben - wenn ich Produkt hinzufügen möchte ich nicht das Modell oder die Parameter ändern.
Die letzte Seite sieht wie folgt aus (Entschuldigung für die lokale Sprache): Danke
Stellen Sie sicher, dass Sie die Dokumentation für ['access_nested_attributes'] (http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html) gelesen haben. Dies ist einer der schwierigsten Teile des Rails-Kerns. – max
Wow, erstaunlich. Danke Max! – Dudis
Max, kann ich zusätzliche Fragen haben? Just thinking .. wenn ich nur ein paar Produkte mit Zahleneingaben habe ... ist es nicht einfacher, es mit einem einzigen Produkt db & Einzelauftrag db zu tun und der Warenkorb zeigt auf Javascript basiert - wenn der Wert eines Produkts steigt, wir wird es im Warenkorb zeigen ... ohne es in db zu speichern. Was ist deine Meinung dazu? Vorteile gegen Nachteile? – Dudis