我有一个在线商店应用程序,购物车在侧面的一列中,在导轨中。我刚刚成功添加了一些 AJAX,只要用户单击“将商品添加到购物车”,它就会重新加载购物车列。我现在正在尝试使购物车中的新项目高亮显示(如黄色淡入淡出效果。)
当我尝试这样做时,它不仅不起作用,而且会破坏我的代码,该代码成功地自动更新了我购物车中的商品数量。该项目仍会添加到购物车中,但您必须刷新才能看到它。我已经隔离了破坏它的代码行,但我不知道问题是什么。我想我已经安装了所有合适的宝石。我环顾四周,一直在研究这个,试图安装正确的宝石等等一天。我想我有它们,但是我的代码有一个问题,我看不到。我真的不知道 javascript 或 jquery,我主要是 Ruby 和 Java 人。
在 Gemfile 中:
gem 'jquery-rails'
gem 'jquery-ui-rails'
在 line_items_controller(用于购物车中的每个行项目)中,
def create
@cart = current_cart
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product.id)
@line_item.product = product
respond_to do |format|
if @line_item.save
format.html { redirect_to store_url}
format.js
format.json { render json: @line_item,
status: :created, location: @line_item }
else
在本专栏的部分内容中,有一个 html.erb 文件:
<% if line_item == @current_item %>
<tr id="current_item">
<% else %>
<tr>
<% end %>
<td><%=line_item.quantity%>×</td>
<td><%= line_item.product.title%></td>
<td class="item_price"><%= number_to_currency(line_item.total_price)%></td>
</tr>
在视图中,在 create.js.erb 中:
$('#cart').html("<%=j render @cart %>");
$('#current_item').css({'background-color: #88ff88'}).animate({"background-color: #114411"}, 1000);
第二行 $('#current_item').... 是打破它的那一行。第一行是使自动更新购物车工作的原因,以及所有其余代码,自动更新购物车工作正常。当我添加第二行时,自动更新停止工作。服务器说它正在渲染部分,但它什么也没做。
我是否正确调用了 jquery 方法?我是否正确运行 gem?我还是新手使用宝石。谢谢你。