2016-06-01 5 views
0

私は管理モデルで検索フィールドを実装する際にStuck.ioからチュートリアルを行っているので、誰かが特定の管理者を検索できます。フォームが表示されますが、検索を使用しようとするとエラーフィールドが表示され、どこが間違っているのか分かりません。未定義のローカル変数またはメソッド `params '(検索フィールド実装時)

私は取得しています正確なエラーは次のとおりです。

NameError at /admins 
undefined local variable or method `params' for #<Class:0x007f91e39df950> 

マイカスタム工夫管理コントローラ:私のカスタム管理コントローラの(インデックスとショーページを作成する)

class AdminController < ApplicationController 
    before_action :authenticate_admin! 

    def index 
    @admins = Admin.all 
    # Search Query 
    @admins = Admin.search(params[:search]) 
    end 

    def show 
    @admin = Admin.find_by_admin_ident(params[:id]) 
    end 

end 

ルート:

  admins GET /admins(.:format)     admin#index 
      admin GET /admins/:id(.:format)    admin#show 

私の管理モデル:検索方法

class Admin < ActiveRecord::Base # Search Functionality def self.search(search) if search @admins = Admin.where(["name LIKE ?","%#{params[:search]}%"]) else all end end end 
そして最後に、私の検索フォーム:あなたの入力を事前に

<div class="col-md-4"> 
    <div class="info-block"> 
    <%= form_tag admins_path, :method => 'get' do %> 
     <%= text_field_tag :search, params[:search], :class => 'form-control', :id => 'admin-search-field' %> 
     <center><%= submit_tag "Search Users", :class => 'btn btn-default btn-sm', :id => 'search-btn' %></center> 
    <% end %> 
    </div> 
</div> 

ありがとう!もっと必要なものがあれば教えてください!

答えて

2

モデル内でparamsハッシュにアクセスすることはできません。これはコントローラからのみアクセス可能です。

の代わりに:

@admins = Admin.where(["name LIKE ?","%#{params[:search]}%"]) 

用途:あなたはすでにやっているよう

@admins = Admin.where(["name LIKE ?","%#{search}%"]) 

そしてコントローラで、値を渡す:トリックをやったこと

Admin.search(params[:search]) 
+0

すごいです!ここでのちょっとした疑問は、火災や姓で複数の列を検索する方法はありますか?キャップ文字が義務ではない場所を検索することはできますか?今私のデモで私は3人のテストユーザーがいるが、私は小文字の名前を表示しないだろうか?あなたには最高の気分!ありがとう –

+0

はい、もちろんです。単純な機能がほしいのであれば、手動で実装することもできます。 PostgreSQLでは大文字と小文字を区別しないために 'LIKE'ではなく' ILIKE'を使います。より高度なツールを探しているなら、Ransack(https://github.com/activerecord-hackery/ransack)のようなものをお勧めします - このスクリーンキャストをチェックしてください(http://railscasts.com/episodes/370 -ranack)をクイックスタートガイドとして使用します。 –

+0

美しい!どうもありがとう! –

関連する問題