【问题标题】:Check if Spree Cart is empty检查Spree Cart是否为空
【发布时间】:2015-06-02 00:56:01
【问题描述】:

如何检查 Spree 购物车是否为空,如果不是,我可以更改按钮?

我还以为有方法line_items.count...

 <% unless line_items.count > 0 %>
        <%= link_to "<button>Empezar Pedido</button>".html_safe, "/shop" %>
    <% else %>
        <%= link_to "<button>Terminar Pedido</button>".html_safe, "/shop" %>
    <% end %>

谢谢!

【问题讨论】:

    标签: ruby-on-rails spree


    【解决方案1】:

    这很简单,我这样解决了我的这个问题

    在 application_controller.rb 中

    def load_cart
     @order = current_order
    end
    

    在你的情况下在前端

     <% unless @order.line_items.count > 0 %>
        <%= link_to "<button>Empezar Pedido</button>".html_safe, "/shop" %>
    <% else %>
        <%= link_to "<button>Terminar Pedido</button>".html_safe, "/shop" %>
    <% end %>
    

    谢谢

    【讨论】:

    • Qubaish,刷新页面后,我的购物车弹出窗口在生产时为空。 “perform_caching”已启用 - config.action_controller.perform_caching = true。当我去结帐页面时,我可以看到这些项目。我的大礼包版本是 3.1.0。我花了 2 天,但没有找到解决方案。请帮忙。谢谢。
    • 我认为“perform_caching”无关紧要。现在有两种情况 1)如果您的弹出窗口使用 ajax 请求,那么请查看响应您的请求是否正在获取订单项? 2)如果您不使用 ajax req,您可以按照我上面的答案中提到的那样加载行项目。谢谢
    • 感谢 Qubaish。我按照你说的做了修改。但是 1)我从购物车中删除了所有项目并刷新页面,所有删除的行项目再次显示在弹出窗口中,而不是空的弹出窗口。 2)另一种情况是弹出窗口中有两个项目,然后删除这两个项目并添加新项目。当弹出窗口打开时,这两个项目都会添加到弹出窗口中。实际行为应该只添加一项。真的很奇怪,没有添加项目,它就填充到购物车中。如果您有任何解决方案,请告诉我。谢谢。
    • 是的,这很奇怪,但为此您必须调试代码 1) 禁用缓存 2) 当您从购物车中删除商品时,请检查您的数据库并确保您的商品从数据库中删除或不是。 3)或者只是在rails控制台中播放并创建manullay行项目,然后从控制台中删除行项目并检查行为。
    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 2013-07-18
    • 2013-07-12
    • 2013-07-27
    • 2015-08-09
    • 2017-06-14
    • 2017-10-07
    • 2019-09-30
    相关资源
    最近更新 更多