通过' created_at'在Spree管理面板中对产品进行排序领域

时间:2015-10-30 16:44:16

标签: ruby-on-rails spree

我试图在'产品'中显示其他列(created_at)。我的Spree管理面板中的选项卡。我使用类似the standard name and master price columns的方式使用了deface。将带有可排序链接的标题添加到表中的界面如下所示:

Deface::Override.new(
    virtual_path: 'spree/admin/products/index',
    name:         'created_at_column_header_in_products',
    insert_before: "[data-hook='admin_products_index_header_actions']"
    text: "
        <th class='text-center'>
            <%= sort_link @search, 'created_at', Spree.t(:created_at) %>
        </th>
    "
)

我可以点击&#34;创建AT&#34;链接和被查询的网址是

http://localhost:3000/admin/products?q%5Bdeleted_at_null%5D=1&q%5Bs%5D=created_at+asc

但是,我在控制台中看不到SQL查询,它会按created_at对产品进行排序(按名称排序会产生按名称排序的SQL查询),管理面板中的结果看起来确实没有排序。

为什么我的解决方案不起作用?

编辑:

我尝试了spree_products表中的每个字段,并且唯一使用此变形覆盖的字段是nameslug。这个东西取决于什么?

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。我发现whitelisted_ransackable_attributes模型中有类似Spree::Product的内容,但它只有slug属性。我在装饰者中覆盖了它:

Spree::Product.class_eval do  
  self.whitelisted_ransackable_attributes = %w[slug created_at]
end