2017-02-21 17 views
0

私はRails 5サイトで高度な検索を実装しようとしています。ユーザーはパラメータ "provider_type"を渡します。この値を含むすべてのレコードを返したいと思います。値は、シンプルフォームを使用したドロップダウンリストから選択します。私new.html.erbは、次のようになります。postgresカラムのパラメータ値の検索

<%= simple_form_for Search.new, :html => {:class => 'form-horizontal' } do |f| %> 
    <%= f.input :provider_type, collection: ['Mental Health', 'Medical'] %> 
    <%= f.button :submit %> 
<% end %> 

マイサーチモデルは次のようになります。

class Search < ApplicationRecord 
    def search_providers 
     providers = Provider.all 
     providers = providers.where("provider_type LIKE ?", ['Mental Health', 'Medical']) if provider_type.present? 
     providers 
    end 
end 

そして、私の検索コントローラ:

def SearchesController < ApplicationController 
    def new 
     @types = Provider.uniq.pluck(:provider_type) 
    end 

    private 
     def search_params 
      params.require(:search).permit(:provider_type) 
     end 
    end 
end 

私が検索してみてください " PG :: UndefinedFunction:ERROR:演算子が存在しません:文字の変化[] ~~不明

EDIT

私は

これはエラーを生成します
providers.where(provider_type: provider_type) if provider_type.present? 

として、それを言い替える「PG :: InvalidTextRepresentation:ERROR:不正な形式の配列をリテラル: "%メンタルヘルス%" 詳細:MUTアレイ値で始まります "{"または寸法情報を含む。

答えて

0

おそらく、LIKE演算子は必要ありません。 IN(またはANY)チェックフィールドは、配列の要素のいずれかに一致する場合:「:ERROR:リテラル不正な形式の配列:PG :: InvalidTextRepresentation "%メンタルヘルス%"

providers.where(provider_type: provider_type) if provider_type.present? 

Rails 3/Ruby: ActiveRecord Find method IN condition Array to Parameters single quote issue

+0

これはエラーを生成しますDETAIL:配列値mutは、 "{"または次元情報で始まります。 – DudeMontag

関連する問題