2011-09-23 26 views
1

我在使用大礼包,我想根据产品的created_at对产品列表进行排序。根据created_at在Spree中对产品详情进行排序

我试图找到方法来覆盖lib/scopes/product.rb下的spree默认范围,但找不到它。

我想在公共面板上列出最近创建的产品。我怎样才能做到这一点?

回答

13

首先回答会打破管理面板的产品版本,也许其他的东西在疯狂1.1稳定。

不明确的列名:created_at

您可以通过指定表名解决这个问题:

Product.class_eval do 
    default_scope order("spree_products.created_at DESC") 
end 

但我认为最好的解决办法是修补公共产品控制器或视图,而不是模型本身作为default_scope可能无处不在,并且切换/删除在default_scope中定义的订单,您必须致电.re order()

,可能是因为此,SpreeCommerce文档特别不建议您在产品范围添加顺序:

来源:http://guides.spreecommerce.com/scopes_and_groups.html#modifying-available-scopes

所以我觉得这样做没有拧施普雷核心产品型号是的正确方法覆盖产品模板:

覆盖视图/礼包/共享/ _products.html.rb

替换

<% products.each do |product| %> 

<% products.descend_by_updated_at.each do |product| %> 

来源:https://groups.google.com/forum/#!topic/spree-user/lW5sGsbMTfM

对我的作品™

+0

这可以更精细地用抹掉重写处理一点点,而不是覆盖整个视图,但似乎这个答案比被标记为接受的答案更为知情。 –

相关问题