2017-01-17 7 views
0

私はalgoliasearch-rails gemを使用してレールアプリで検索するためにalgoliaを使用しています。私の製品モデルでAlgolia unknown parameter

、私はこれがあります。

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検索属性をどのように参照しますか?

+0

あなたはActiveRecordのを使用していますか?もしそうなら、おそらく ':active? '属性は':active'でなければならないでしょう。 ':active?'は、ARによって提供されるブール値フィールドの単なるエイリアスです。 –

答えて

0

このような疑問符の付いた属性は使用できません。

コメントにSlava.Kが記載されているので、active?メソッドがアクティブレコード属性の場合は、代わりにactiveを使用するとうまく動作します。

はしかし、active?がアクティブレコードとは無関係な方法であれば、私は次のようにカスタム属性を追加することをお勧めので:カスタムの

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