【问题标题】:Sorting products in Spree admin panel by 'created_at' field在 Spree 管理面板中按“created_at”字段对产品进行排序
【发布时间】:2015-10-30 16:44:15
【问题描述】:

我正在尝试在我的 Spree 管理面板的“产品”选项卡中显示附加列 (created_at)。我已经使用类似于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>
    "
)

我可以点击“创建于”链接,然后被查询的网址是

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

但是,我在控制台中看不到任何 SQL 查询,它会按 created_at 对产品进行排序(而按名称排序会产生按名称排序的 SQL 查询)并且管理面板中的结果确实似乎未排序。

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

编辑:

我尝试了spree_products 表中的每个字段,唯一可以使用此破坏覆盖的字段是nameslug。这东西靠什么?

【问题讨论】:

  • 好的,你的意思是你正在从浏览器获取正确控制器的请求,对吧?
  • @ArupRakshit 是的。该请求将发送到 Spree::Admin::ProductsController#index 操作,如果这是您所要求的。

标签: ruby-on-rails spree


【解决方案1】:

我解决了这个问题。我发现Spree::Product 模型中有类似whitelisted_ransackable_attributes 的东西,它只有slug 属性。我已经在装饰器中覆盖了它:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多