我喜欢使用ajax用新值更新表。有什么想法。我有一个购物车,用户可以在其中更改产品的数量。我不喜欢重新加载整个页面。我想重新加载桌子。目前,它可以重新加载整个页面。
我做了什么。
我有一个输入数量值的表格。要将产品与购物车(ManyToMany)连接,我使用line_item。因此,每个line_item代表购物车中的产品。
购物车的此视图
<div id="cart_table"> <%= render @cart %> </div>
渲染@cart
<table class="table table-hover table-condensed"> <tbody> <%= render cart.line_items %> </tbody> </table>
Line_items具有更新形式:
<%= 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 %>
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
这是我卡住的地方。我必须在update.js.rjs中放入什么?现在我有这条线
$('#cart_table').replaceWith("<%= escape_javascript(render @cart) %>");
但是什么也没发生,并且控制台中出现错误:
send jQuery.extend.ajax $.rails.rails.ajax $.rails.rails.handleRemote (anonymous function) jQuery.event.dispatch elemData.handle
希望能有一些想法来解决这个小问题。
谢谢
编辑:最好使用
$('#cart_table').html("<%= escape_javascript(render @cart) %>");
在js文件中。
尝试使用update.js.erb代替update.js.rjs
update.js.erb
update.js.rjs