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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage