【问题标题】:Searchkick filtering by buttonsSearchkick 按按钮过滤
【发布时间】:2016-04-18 17:14:35
【问题描述】:

我有一个“提要”模型,其中包含多个条目,这些都显示在一个页面上。 Searchkick 已全部设置完毕,并且具有默认搜索栏的魅力,但不幸的是,我似乎无法弄清楚如何使用按钮来代替。

我正在尝试使用 Searchkick 通过按钮单击进行搜索(单击颜色白兰地,获取与颜色白兰地等匹配的所有结果)。我在它的文档中看到这被称为“聚合”,例如 { color: "brandy" }。

我是否必须为我的控制器/模型中的每个过滤器创建单独的方法?然后通过单击按钮调用他们?我将如何处理多个?

【问题讨论】:

  • 您是否通过 ajax 请求发送搜索参数?能否分享一下您的搜索条码,以便我们查看需要修改的地方?
  • 我实际上只是想在服装网站上构建类似于过滤器的简单按钮。例如点击“尺码 M”,它会过滤中号衣服

标签: ruby-on-rails searchkick


【解决方案1】:

不,您不会向控制器添加新操作。扩展 Searchkick 文档中的聚合示例:

在控制器中

def filters
  allowed_filters = %w(color size)
  filters = params.select{|k, v| allowed_filters.include?(k) }
end
helper_method :filters

在视图中

= link_to 'color brandy', {action: 'index', filters.merge(color: 'brandy'}, class: 'ui-button'

【讨论】:

  • 感谢您的回答,但我该如何将其添加到视图等中?
  • 查看?为什么?那几行进入控制器。啊,我看到了按钮。在这种情况下,将 filters 设置为控制器中的方法。我把代码放在这里,这里的cmets不做换行:gist.github.com/TomK32/6ef879faec9e999cd41a8948b9f3cdaf
  • 嗨,Thomas,您能否编辑答案以便对每个人都有帮助:) 我想可以复制并粘贴查看按钮以制作其他过滤器。
  • 好主意,把答案复制到这里。是的,只需复制以添加更多按钮。 filters.merge({...}) 将保留以前的按钮过滤器
猜你喜欢
  • 1970-01-01
  • 2015-09-22
  • 2020-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-30
  • 2019-06-04
相关资源
最近更新 更多