【发布时间】:2015-10-03 08:30:29
【问题描述】:
我有一个按特定顺序排列的元素列表。问题是当我用 AJAX 更新任何元素时,这个元素会跳到列表的底部。当我重新加载页面时,它会返回正确的位置。更新时我希望这个元素留在原处。
名单:
<div class="shopping-cart">
<%= render "shopping_cart" %>
</div>
_shopping_cart.html.erb:
<% @order_items.each do |order_item| %>
<%= render 'carts/cart_row', order_item: order_item %>
<% end %>
_cart_row.html.erb:
<%= form_for order_item, remote: true do |f| %>
<%= f.number_field :quantity, class: "form-control cart-quantity" %>
<%= f.submit "Submit", class: "btn" %>
<% end %>
update.js.erb:
$(".shopping-cart").html("<%= escape_javascript(render 'carts/shopping_cart') %>")
任何想法为什么会发生这种情况?谢谢。
更新
控制器代码:
@order_items = current_order.order_items.order("created_at ASC")
并且不再有任何 AJAX 代码,都在这里,因此没有其他排序标准。
【问题讨论】:
-
需要查看实际加载项目的控制器代码。 AJAX 查询是否有单独的代码?如果是这样,请确保该查询具有相同的排序条件。
-
更新了初始帖子
-
在该代码中,您按“created_at ASC”对它们进行排序,这意味着最新创建的项目将位于底部。我不确定您如何以任何其他顺序获取它们,除非在某处有其他代码将它们排序为不同的顺序。
标签: javascript jquery ruby-on-rails ajax