搜索功能错误的参数个数(2个为1)

时间:2015-08-10 16:43:22

标签: ruby-on-rails search argument-passing

我正在尝试实现一个简单的搜索功能,它会触发一些参数错误。这里 我的观点

<%= form_tag(clients_path, :method => "get", id: "search-form") do %>
<%= text_field_tag :search, params[:search], placeholder: "Search Clients" %>
<%= submit_tag "Search", :name => nil %>
<% end %>

我的控制器中的方法

def index
if current_user.admin?
  if params[:search]
    @clients = Client.search(params[:search], load:true).result
  else
    @clients = Client.all.paginate(:per_page => 3, :page => params[:page])
  end
else
    @clients = current_user.clients
end
end

我的模特

def self.search(query)
  where("name like ?","%#{query}%") 
end

我收到错误消息&#34;错误的参数数量(2为1)&#34;。我不知道传递给模型的另一个参数是什么。一双新鲜的眼睛会有所帮助。感谢。

2 个答案:

答案 0 :(得分:0)

您的search方法只允许一个参数:

def self.search(query)
  where("name like ?","%#{query}%") 
end

但你试图用2:

@clients = Client.search(params[:search], load:true).result
                                        # ^^^^^^^^^^^ second argument

答案 1 :(得分:0)

实际上你传递了两个参数。

@clients = Client.search(params[:search], load:true).result

但在模型中你只需要单个参数。

def self.search(query)
  where("name like ?","%#{query}%") 
end

您必须在模型方法中访问load:true。

def self.search(query, load)
  where("name like ?","%#{query}%") 
end

或根据您的要求。