【问题标题】:Algolia unknown parameterAlgolia 未知参数
【发布时间】:2017-06-01 02:38:59
【问题描述】:

我正在使用 algolia 在使用 algoliasearch-rails gem 的 rails 应用程序中进行搜索。

在我的产品模型中,我有这个:

algoliasearch index_name: "Product" do 
  attributes :id, :name, :description, :active?
  ...
end

我正在尝试通过名为“活动?”的过滤器过滤结果。当我尝试使用包含的参数运行搜索时,我收到了来自 Algolia 的错误消息。

{"hits"=>[], "hitsPerPage"=>0, "page"=>0, "facets"=>{}, "error"=>#<Algolia::AlgoliaProtocolError: 400: Cannot POST to https://algolia.net/1/indexes/Product_development/query: {"message":"Unknown parameter: active%3F","status":400}

我不知道如何正确引用参数。它正在检索“活动?”当我不按活动过滤时正确属性?。我可以更改参数名称,但宁愿不更改。

如何引用名称中带有问号的 Algolia 搜索属性进行过滤?

【问题讨论】:

  • 您在使用 ActiveRecord 吗?如果是这样,那么:active? 属性可能应该只是:active,因为它是它在数据库中的命名方式。 :active? 只是 AR 提供的布尔字段的别名

标签: ruby-on-rails algolia


【解决方案1】:

你不能使用带有问号的属性。

正如 Slava.K 在评论中提到的,如果您的 active? 方法是一个 Active Record 属性,那么使用 active 代替就可以了。

但是,如果active? 是与 Active Record 无关的方法,我建议添加一个自定义属性,如下所示:

class Product < ActiveRecord::Base
  include AlgoliaSearch

  algoliasearch do
    attributes :id, :name, :description
    attribute :active do
      active?
    end
  end

  def active?
    ...
  end
end

在此处了解有关自定义属性的更多详细信息:https://github.com/algolia/algoliasearch-rails#custom-attribute-definition

【讨论】:

    猜你喜欢
    • 2016-04-10
    • 2018-10-23
    • 2016-05-27
    • 1970-01-01
    • 2017-10-21
    • 2016-12-15
    • 2015-06-07
    • 2014-06-09
    • 2011-09-20
    相关资源
    最近更新 更多