2012-04-13 11 views
0

こんにちは私は私の会社の検索バーを持っています..しかし、それは投げているとエラーと私はなぜうまくいかない!Rails Search [params] error

マイビュー

application.html.erb

<%= form_tag firms_path, :method => 'get', :class => 'form-search' do %> 
<%= text_field_tag :search, params[:search], :class => 'input-medium search-query', :placeholder => 'Firm name' %> 
<%= submit_tag "Search", :name => nil ,:class => 'btn' %> 
<% end %> 

マイfirms_controller.rb

def index 
@firms = Firm.search(params[:search]) 
end 


def self.search(search) 
    if search 
    where(['name LIKE ?', "%#{search}%"]).page(params[:id]) 
    else 
    scoped 
    end 
end 

これは正常に動作するために使用されるが、今ではこのエラーを投げています。

NameError in FirmsController#index 

undefined local variable or method `params' for #<Class:0x007f93cd8b2ac8> 

app/models/firm.rb:13:in `search' 
app/controllers/firms_controller.rb:8:in `index' 

任意の助けを事前に感謝

ロス

+1

は 'params'はので、あなたのモデルの一つ内側の方法から使用することはできませんコントローラメソッドです。 – mikej

+0

どのテーブルに名前がありますか。 – Kashiftufail

+0

Firm.searchを使用してFirmテーブルのself.searchメソッドを呼び出しています。ビュー内の[params]:検索は、コントローラの.searchメソッドの引数? – RMcNairn

答えて

1

修正

def index 
@firms = Firm.search(params[:search], params[:id]) 
end 

def self.search(search, id) 
if search 
    where(['name LIKE ?', "%#{search}%"]).page(id) 
else 
    scoped 
end 
end 
+0

これは夢のように動作します!それがどのように動作するかを理解するのを助けてくれたマイクとありがとう@mikejに感謝します! – RMcNairn