2015-08-10 1 views
0

Я пытаюсь реализовать простую функцию поиска, которая вызывает множество ошибок аргумента. Здесь Мои взглядыФункция поиска неправильного числа аргументов (2 для 1)

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

Я получаю сообщение об ошибке "неверное количество аргументов (2 на 1)". Я не вижу, какой другой аргумент передан модели. Свежая пара глаз поможет. Благодарю.

ответ

0

Ваш метод search позволяет только один аргумент:

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

Но вы пытаетесь использовать его с 2:

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

Спасибо, но теперь он вызывает другую проблему (неопределенный метод 'result 'для # ). – Bastien

+0

Итак, удалите '.result' из' Client.search (params [: search], load: true) .result', что он должен делать? –

+0

Я использовал его изначально, чтобы исправить ошибку с will_paginate, которая вызывала неопределенный метод total_pages. Я удалил его и удалил разбивку на страницы с помощью will_paginate и попытался найти другой способ разбиения страницы на paginate. Благодарю. – Bastien

0

На самом деле вы передаете два параметра.

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

Но в модели вы просто принимаете один параметр.

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

Вы должны получить доступ к загрузке: true в режиме модели.

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

или на основе ваших требований.

+0

Какой смысл публиковать такой же ответ, как мой? –

Смежные вопросы