0

我有一个在线商店应用程序,购物车在侧面的一列中,在导轨中。我刚刚成功添加了一些 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%>&times;</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?我还是新手使用宝石。谢谢你。

4

3 回答 3

0

原来是一个语法错误,它破坏了代码。我仍然没有黄色渐变工作,但我的其余代码现在正在工作。

在 create.js.erb 中,我有:

$('#current_item').css({'background-color: #88ff88'}).animate({"background-color: #114411"}, 1000);

当我应该有的时候

$('#current_item').css({'background-color': '#88ff88'}).animate({"background-color:" "#114411"}, 1000);

我没有得到正确的引号。'background-color: #88ff88'当我应该有两套时,我得到了它,一套围绕背景颜色,一套围绕颜色本身。

我没有 gem 工作,如果有人对此有答案,我很想听听他们的意见,但至少我解决了代码被破坏的原因。

于 2013-07-03T17:44:08.227 回答
0

这已经很晚了,但我正在经历完全相同的事情。我发现你的回复很有帮助,所以我让你知道我认为有什么问题。

在您的 line_item_controller 上,您编写“format.js”但不传递任何变量。但是在 html.erb 文件中,您执行 <% if line_item == @current_item %>

因为你没有传入任何变量,所以你永远不会在@current_item 中得到任何东西。因此,您的 if 语句总是失败,并且 html.erb 将始终保持格式而不是

我希望你已经明白了这一点!

于 2015-01-14T02:53:35.140 回答
0

内部下载 rails32/depot_m/app/views/line_items/_line_item.html.erb

确保您的引号是双引号而不是单引号。

如果它是亮点将不起作用。

于 2013-12-13T17:18:25.267 回答