2012-04-13 1 views
0

Hallo Ich habe eine Suchleiste für meine Firmen .. aber es scheint zu kotzen und Fehler und ich kann nicht herausfinden, warum!Rails Suche [params] Fehler

My View

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 %> 

Mein 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 

Diese verwendet funktionieren, aber jetzt ist es um diesen Fehler zu werfen auf.

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' 

Irgendwelche Ideen? Vielen Dank im Voraus für jede Hilfe

Ross

+1

'params' ist eine Controller-Methode, so kann nicht von einem Verfahren innerhalb eines Ihrer Modelle verwendet werden. – mikej

+0

In welcher Tabelle finden Sie Namen wie .... – Kashiftufail

+0

Ich rufe die self.search-Methode auf der Firm-Tabelle, mit Firm.search, und ich dachte, dass die [params]: Suche in der Ansicht, gebunden an die Argument des Controllers .Suchmethode? – RMcNairn

Antwort

1

Ändern

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

das funktioniert wie ein Traum! danke mike und danke @mikej dafür, dass du mir geholfen hast zu verstehen, wie es funktioniert! – RMcNairn