【问题标题】:RoR Empty Cart/Delete line_ItemsRoR 清空购物车/删除 line_Items
【发布时间】:2014-01-02 20:22:41
【问题描述】:

我对 RoR 还是很陌生,遇到了一个我似乎无法解决的问题。我已经构建了将新产品添加到数据库并允许用户将单个项目添加到他们的购物车的功能,我的删除方法只是给我一个错误,说它在 carts_controller 中找不到删除方法。任何帮助将不胜感激。

\app\views\cart\show.html.erb

<%= button_to 'Empty Cart', @cart, method: :delete,
    data: { confirm: 'are you sure?'} %>

\app\controllers\carts_controller.rb

def destroy
 @cart.destroy if @cart.id == session[:cart_id]
 session[:cart_id] = nil
 respond_to do |format|
   format.html { redirect_to store_url,
     notice: 'Your cart is empty' }
  format.json { head :no_content }
  end
end

private
def set_cart
  @cart = Cart.find(params[:id])
end

给出的错误消息

未知动作
找不到 CartsController 的“销毁”操作

\config\routes.rb

Depot::Application.routes.draw do

root 'store#index', as: 'store'
resources :line_items
resources :carts
get "store/index"
resources :products

end

【问题讨论】:

  • 显示您的路线 - 很可能您没有链接到那里的操作。 (经典 Rails 会神奇地从控制器中抓取每个动作。由于它造成的令人难以置信的混乱,该方案已被丢弃。)
  • 更新显示我的 routes.rb 文件

标签: ruby-on-rails e-commerce shopping-cart


【解决方案1】:

取决于您的 @cart 变量中当前设置的内容,您可以为此进行检查吗?

否则,你也可以试试这样的:

<%= link_to 'Empty Cart', cart_path(@cart), method: :delete, confirm: 'are you sure?' %>

【讨论】:

  • 感谢您的帮助,但仍然会产生相同的错误,“找不到 CartsController 的操作 'destroy'”。我已经更新了我的销毁方法以包含私有 set_cart 方法,如果这就是您所说的“取决于购物车实例变量中设置的内容,即:@cart = Cart.find(params[:id])
  • 只是确保destroy方法不是私有或受保护的吗?路由似乎是正确的
  • 谢谢 derekyau,因为事实证明我在 destroy 方法之上确实有另一个私有方法 (def invalid_cart)。将其移动到控制器的最底部后,一切正常。
猜你喜欢
  • 1970-01-01
  • 2011-04-09
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 2019-11-02
  • 2014-01-24
相关资源
最近更新 更多