Rails 4 Ajax Update Div
Ich möchte mit Ajax eine Tabelle mit den neuen Werten aktualisieren. Was ist die Idee. Ich habe einen Warenkorb, in dem der Benutzer die Menge des Produkts ändern kann. Ich mag es nicht, die ganze Seite neu zu laden. Ich möchte die Tabelle neu laden. Im Moment funktioniert es mit dem Neuladen der ganzen Seite.
Was habe ich getan.
Ich habe ein Formular zur Eingabe eines Mengenwertes. Um das Produkt mit einem Warenkorb (ManyToMany) zu verbinden, verwende ich line_item. Jedes line_item repräsentiert also ein Produkt in einem Warenkorb.
Diese Ansicht des Wagens
<div id="cart_table">
<%= render @cart %>
</div>
Der render @cart
<table class="table table-hover table-condensed">
<tbody>
<%= render cart.line_items %>
</tbody>
</table>
Line_items mit dem Update-Formular:
<%= form_tag(line_item_path, method: "put", remote: true, class: "table_form") do %>
<%= hidden_field_tag("product_id", value = line_item.product.id) %>
<label>
<%= number_field_tag "quantity", value = line_item.quantity, in: 1...11 %>
<%= submit_tag "update", class: "btn btn-mini" %>
</label>
<% end %>
Der Controller von line_items:
def update
@cart = current_cart
@line_item = @cart.update_product(params[:product_id], params[:quantity])
respond_to do |format|
if @line_item.save
format.html { redirect_to current_cart, notice: 'Changed' }
format.js
else
format.html { render action: "new" }
end
end
end
Hier stecke ich fest. Was muss ich in meine update.js.rjs eintragen? Jetzt habe ich diese Zeile
$('#cart_table').replaceWith("<%= escape_javascript(render @cart) %>");
Es passiert aber nichts und ich bekomme einen Fehler in der Konsole:
send
jQuery.extend.ajax
$.rails.rails.ajax
$.rails.rails.handleRemote
(anonymous function)
jQuery.event.dispatch
elemData.handle
Wäre nett ein paar Ideen zu bekommen um dieses kleine Problem zu lösen.
Vielen Dank
Bearbeiten: Es ist besser zu verwenden
$('#cart_table').html("<%= escape_javascript(render @cart) %>");
in der js datei.