2012-04-13 66 views
0

嗨我有一个搜索栏为我的公司..但它似乎是呕吐和错误,我不知道为什么!Rails搜索[params]错误

我查看

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 2012-04-13 12:32:14

+0

在哪张表中,您正在寻找像名称.... – Kashiftufail 2012-04-13 12:35:42

+0

我正在使用Firm.search调用Firm表上的self.search方法,并且我认为[params]:在视图中搜索,将它与控制器的搜索方法? – RMcNairn 2012-04-13 13:02:12

回答

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 2012-04-14 12:26:49