2015-10-12 8 views
1

Есть несколько сообщений, подобных этому вопросу, но никто не решает мою проблему. Большинство учебников сегодня, похоже, используют старый способ (Rails < 3). Я на Rails 4.Rails Search Query for LIKE - ActiveRecord :: RecordNotFound

В моем корне, у меня есть:

<%= form_tag search_supports_path, :method => 'get' do %> 
    <p> 
     <%= text_field_tag :search %> 
     <%= submit_tag "Search" %> 
    </p> 
<% end %> 

В контроллере:

#search_supports#index 
    if params[:search] 
    @supports = Support.find(:all, :conditions => ['name LIKE ?', "%#{params[:search]}%"]) 
    else 
    @supports = Support.find(:all) 
    end 

Для тестирования, если у меня есть, в контроллере, @supports = Support.all, я бы получил все опоры в представлениях с помощью блока @supports.each.

Точная ошибка, я получаю:

Couldn't find all Supports with 'id': (all, {:conditions=>["name LIKE ?", "%[:search]%"]}) (found 0 results, but was looking for 2) 

Есть ли Rails 4 делать этот поиск? Если да, возможно, у меня есть ссылка с вашим ответом для чтения? PS: Я все еще изучаю Rails.

ответ

0

Это выглядит подозрительно, как код Rails 2.

Support.find(:all, :conditions => ['name LIKE ?', "%#{params[:search]}%"]) 

В Rails 4 синтаксиса он должен выглядеть следующим образом:

Support.where('name LIKE ?', "%#{params[:search]}%") 

Я бы рекомендовал направляющие рельсы для дальнейшего чтения на ActiveRecord Query Interface.

+0

Я знал, что мой код выглядит древним lol. Это сработало! Благодаря! Я должен подождать 6 минут, прежде чем принимать этот ответ;) – Sylar

+0

Рад, что это помогло! – messanjah

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