- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这里是 Ruby 新手。我正在学习使用 Rails 进行敏捷 Web 开发。在第 11 章中,它要求您向购物车中的商品添加“减少数量”按钮。我继续并尝试实现增加链接。
问题是当我点击链接时它什么也没做。
line_items_controller.rb
def decrease
@cart = current_cart
@line_item = @cart.decrease(params[:id])
respond_to do |format|
if @line_item.save
format.html { redirect_to store_path, notice: 'Item was successfully updated.' }
format.js { @current_item = @line_item }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @line_item.errors, status: :unprocessable_entity}
end
end
end
def increase
@cart = current_cart
@line_item = @cart.increase(params[:id])
respond_to do |format|
if @line_item.save
format.html { redirect_to store_path, notice: 'Item was successfully updated.' }
format.js { @current_item = @line_item }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
end
购物车.rb
def decrease(line_item_id)
current_item = line_items.find(line_item_id)
if current_item.quantity > 1
current_item.quantity -= 1
else
current_item.destroy
end
current_item
end
def increase(line_item_id)
current_item = line_items.find(line_item_id)
current_item.quantity += 1
current_item
end
routes.rb
resources :line_items do
put 'decrease', on: :member
put 'increase', on: :member
end
_line_item.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>
<td><%= link_to "-", decrease_line_item_path(line_item), method: :put, remote: true %></td>
<td><%= link_to "+", increase_line_item_path(line_item), method: :put, remote: true %></td>
<td><%= button_to 'Remove Item', line_item, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
/line_items/increase.js.erb
$('#cart').html("<%= escape_javascript(render(@cart)) %>");
$('#current_item').css({'background-color':'#88ff88'}).animate({'background-color':'#114411'}, 1000);
/line_items/decrease.js.erb
$('#cart').html("<%= escape_javascript(render(@cart)) %>");
$('#current_item').css({'background-color':'#88ff88'}).animate({'background-color':'#114411'}), 1000);
if ($('#cart tr').length==1) {
// Hide the cart
$('#cart').hide('blind', 1000);
}
如果我忘记了任何重要的事情,请告诉我。提前致谢!
----编辑----
我将代码更改为 Rich 发布的代码,这就是当我单击“+”链接时控制台中显示的内容。
Started GET "/line_items/25/qty" for ::1 at 2016-01-30 23:49:11 -0600
ActionController::RoutingError (No route matches [GET] "/line_items/25/qty"):
所以我看到它需要一条用于 qty 的路线,但我不太确定如何设置它。我猜我们设置的 JS 警报没有触发是因为它在此时被卡住了?
----编辑 2----
现在我将链接作为 POST
传递,并从上行和下行链接中获取此名称错误:
Started POST "/line_items/25/qty" for ::1 at 2016-01-31 09:49:04 -0600
Processing by LineItemsController#qty as JS
Parameters: {"id"=>"25"}
Completed 500 Internal Server Error in 38ms (ActiveRecord: 0.0ms)
NameError (undefined local variable or method `current_cart' for #<LineItemsController:0x007fbfb11ea730>):
app/controllers/line_items_controller.rb:70:in `qty'
这里让我感到困惑的是 current_cart
在 increase
和 decrease
方法中起作用,但在 qty
中不起作用。
最佳答案
自从您提出这个问题以来已经过去了一段时间 - 您解决了吗?我对这个问题有一个答案 - 我设法增加/减少购物车中的数字,但没有 Ajax 调用 - 每次单击按钮 - 页面重新加载(我删除了 remote: true
)。我没有遵循@Richard Peck 的解决方案,即使它可能是更好的方法。因此,正如他指出的那样,路由必须使用 get
方法,而不是 put
(我不太确定为什么 get
而不是 post
应该被使用,但如果 Rails 要求它,我很乐意这样做):
resources :line_items do
get 'decrease', on: :member
get 'increase', on: :member
end
此外,StackExchange 上的其他人注意到我忘记了在 Controller 中允许 increase
/decrease
操作,因为我们默认限制了其中的大部分操作:
line_items_controller.rb:
before_action :set_cart, only: [:create, :decrease, :increase]
所以,我想这两个问题是您的问题(就像我的问题一样)。
line_items_controller.rb:
def decrease
product = Product.find(params[:product_id])
@line_item = @cart.remove_product(product)
respond_to do |format|
if @line_item.save
format.html { redirect_to cart_path, notice: 'Line item was successfully updated.' }
format.js
format.json { render :show, status: :ok, location: @line_item }
else
format.html { render :edit }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
end
def increase
product = Product.find(params[:product_id])
@line_item = @cart.add_product(product)
respond_to do |format|
if @line_item.save
format.html { redirect_to :back, notice: 'Line item was successfully updated.' }
format.js
format.json { render :show, status: :ok, location: @line_item }
else
format.html { render :edit }
format.json { render json: @line_item.errors, status: :unprocessable_entity }
end
end
end
cart.rb:
def add_product(product)
current_item = line_items.find_by(product_id: product.id)
if current_item
current_item.quantity += 1
else
current_item = line_items.build(product_id: product.id)
end
current_item
end
def remove_product(product)
current_item = line_items.find_by(product_id: product.id)
if current_item.quantity > 1
current_item.quantity -= 1
elsif current_item.quantity = 1
current_item.destroy
end
current_item
end
和链接:
<td><%= link_to "-", decrease_line_item_path(product_id: line_item.product), class:"btn btn-danger" %></td>
<td><%= link_to "+", increase_line_item_path(product_id: line_item.product), class:"btn btn-success" %></td>
这会满足您的需求吗?也许有什么想法为什么 Ajax 不起作用?这是完整问题的链接:
关于javascript - rails : Updating quantities in shopping cart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35104257/
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
到目前为止,基本上我的脚本将值发送到网关,然后被重定向到 CS 购物车。在该页面中,我获取返回的值并对其进行操作。 我使用 fn finish 和 fn 更改订单状态来完成订单,但无论我做什么,我都会
我创建了一个上下文处理器,通过在购物车应用程序目录中创建一个新文件并将其命名为 context_processors.py,将当前购物车设置为模板的请求上下文: from .cart import C
我网页顶部的购物车 block 和每个产品中的“添加到购物车”按钮都消失了。这种情况发生在我网站的每个页面上,而且是突然发生的(请原谅,如果我能记忆起/缩小我所做的更改是导致这种情况的原因,那么我就不
我正在尝试在 Shopify 中制作一个 ajaxed 购物车。我已使产品页面将商品添加到购物车,而无需刷新或转到购物车页面。要查看购物车,您可以单击输入或带有 .cart-show 的链接,因此我将
我试图弄清楚如何将 css 类添加到 SimpleCartJS 的购物车表中生成。 (我使用的购物车布局是这样的: http://bootsnipp.com/snippets/featured/sho
我有一个函数add_to_cart想要反向重定向到由single_product函数呈现的产品详细信息页面,该函数具有产品id的slug,无法找到解决它的方法。正在获取这个错误 Reverse for
有人知道购物车(或类似商品)的Unicode字符吗?我找到了比萨饼(U + 1F355),热线电话(U + 2706)以及这是什么(U + 26A7),但没有该死的购物车! 最佳答案 到目前为止,没有
此代码段为我提供了以下错误消息: def cartItems(cart): items=[] for item in cart: items.append(Produc
我想在 prestashop os-commerce 上获取购物车内容。怎么做到的? 最佳答案 您应该看一下位于 classes/Cart.php 中的 Cart 类。有一个名为 getProduct
我正在使用 Magento 购物者主题 (http://shopper.queldorei.com/)。 当我将产品添加到我的购物车时,它会添加多个元素 Cart 我发现是 jQuery 在这里犯
CS-Cart ajax 工作正常,我也收到响应,但如何在我的 View (checkout.tpl)文件上使用 html/js 响应。 Controller (前端):send_sms.php us
我只在 Magento 上工作了几天,但它已经很令人困惑了。我开始思考这个问题,但目前有一个问题是我的思考。 我的客户想要顶部链接旁边的购物篮功能,而不是顶部链接中的“我的购物车”。简单地说,我想做的
在作业中,我们被要求对 CART 模型执行交叉验证。我试过使用 cvFit函数来自 cvTools但收到一条奇怪的错误消息。这是一个最小的例子: library(rpart) library(cvTo
在主产品信息页面中,它显示了完整的产品描述,我试图放入超长的 HTML 代码来进行打包交易。在编写了大约 1200 行 html 后,我遇到了困难。 我可以做一些改变来扩大产品描述的最大字符长度吗?
我想在 shopify 的 cart.liquid 页面上添加结帐进度条。当用户点击产品上的添加到购物车时,我想显示一个进度条。任何帮助将不胜感激。 最佳答案 只要您的客户离开购物车页面去结账,新的
我在代码中存储多个 ID 时遇到问题。我需要将 id 保存在单个变量(数组)中,因为我将在 cart.php 中调用它来显示添加到购物车的元素。这是我的代码。 Marketech | Bu
我今天工作的服务器的主机在安装 x-cart 后关闭了该站点,因为在服务器上发出了以下命令,他们认为这是一个安全漏洞: ls -la 2>&1 id 2>&1;whoami 2>&1; id 2>&1
您好,我正在尝试创建一个在线电子商务商店,尽管有 paypal 购物车上传功能,但我一切正常,我一直在关注来自 developphp.com 的一系列视频这是我的文件 cart.php 中的代码 a
我有一个 cs-cart 项目,它以我不希望的方式显示页面标题(嗯,以客户不喜欢的方式)。 我希望它显示:在主页上:公司名称在其他页面上:公司名称 |页面标题(即公司名称|关于我们)等 我有以下脚本:
我是一名优秀的程序员,十分优秀!