2017-01-17 1 views
0

Ich benutze Algolia in einer Schiene App mit dem Algoliasuche-Schienen-Juwel zu suchen.Algolia unbekannter Parameter

In meinem Modell, ich habe dies:

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

Ich versuche, durch einen Filter Ergebnisse zu filtern als "aktiv?". Ich bekomme einen Fehler von Algolia zurück, wenn ich versuche, die Suche mit dem Parameter auszuführen.

{"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} 

Ich kann nicht herausfinden, wie man den Parameter richtig referenziert. Es arbeitet daran, die "aktive?" Attribut richtig, wenn ich nicht nach aktiv filtern ?. Ich könnte den Parameternamen ändern, würde es aber lieber nicht.

Wie referenziere ich ein Algolia-Suchattribut, das ein Fragezeichen im Namen zum Filtern hat?

+0

Sind Sie Active mit? Wenn ja, dann sollte das Attribut ': active?' Nur ': active' sein, weil es so in der Datenbank benannt ist. ': active?' ist nur ein Alias ​​für das von AR bereitgestellte boolesche Feld –

Antwort

0

Sie können ein Attribut nicht mit einem Fragezeichen wie diesem verwenden.

Wie Slava.K in einem Kommentar erwähnt, wenn Ihre active? Methode ist ein Active Record-Attribut, mit active stattdessen funktioniert gut.

Wenn jedoch active? ein Verfahren in keinem Zusammenhang mit Active Record ist, schlage ich vor, das Hinzufügen einer benutzerdefinierten wie so Attribut:

class Product < ActiveRecord::Base 
    include AlgoliaSearch 

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

    def active? 
    ... 
    end 
end 

Mehr Details zu benutzerdefinierten hier Attribute: https://github.com/algolia/algoliasearch-rails#custom-attribute-definition

Verwandte Themen