2012-04-13 3 views
0

Привет У меня есть панель поиска для моих Фирм .. однако, похоже, это метание и ошибка, и я не могу понять почему!Rails Поиск [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

Я вызываю метод self.search на таблице Firm, с Firm.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