我使用algolia使用algoliasearch-rails gem在rails应用中搜索。
在我的产品型号中,我有这个:
algoliasearch index_name: "Product" do
attributes :id, :name, :description, :active?
...
end
我试图通过一个名为" active?"的过滤器来过滤结果。当我尝试使用包含的参数运行搜索时,我从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}
我无法弄清楚如何正确引用参数。它正在努力检索&#34;活跃的?&#34;如果我没有按活动过滤?我可以更改参数名称,但不愿意。
如何引用在过滤名称中带有问号的Algolia搜索属性?
答案 0 :(得分:0)
您不能使用带有问号的属性。
正如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