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ファイルで。