2016-05-04 5 views
0

У меня есть страница, на которую я хотел бы ссылаться и фильтровать все записи, где логический атрибут является истинным.Rails 4 Filter Boolean True

<div class="filter btn btn-default btn-directory active"><%= link_to "Accepting", people_path(:filter_by => :search == true), {:method => :get} %></div> 

Это не несет никаких ошибок, но оно не дает результатов.

От контроллера:

def index 
     @people = Person.all 

     if params[:filter_by] 
      @people = Person.where(:position => params[:filter_by]) 
     else 
      @people = Person.all 
     end 
    end 
+0

Этот синтаксис 'people_path (: filter_by =>: search == true)' просто добавляет '? Filer_by = false' к вашим параметрам запроса - вероятно, не то, что вы ожидаете. Можете ли вы включить более подробную информацию о своем коде зрения/контроллере и о том, что вы пытаетесь сделать? Я предполагаю, что вы пытаетесь установить ссылку на список всех людей, отфильтрованных некоторыми параметрами? –

+0

Я добавил в текст контроллера для просмотра. Теперь я вижу, что я забыл о тексте filter_by в контроллере. Могу ли я настроить оператор filer_by IF с помощью 'elsif' для атрибута' search'? И да, вы правы, я пытаюсь отфильтровать индексную страницу контроллера, чтобы перечислять только людей, где 'search == true' – lostrennie

ответ

0

Предположим, вы хотите, чтобы извлечь все значения, где person.search == true:

Отправить параметров в вашем people_path следующим образом:

link_to "Accepting", people_path(filter_by: true) 

Тогда в PeopleController#index:

def index 
    Person.where("search = ?", params[:filter_by] == "true") 
end 
+0

Это имеет смысл, но с оператором IF в' def index', он все еще делает не возвращай ничего. Вот как я его бросил, я что-то упустил? 'если PARAMS [: filter_by] \t \t @people = Person.where (: положение => PARAMS [: filter_by]) \t ELSIF \t \t @people = Person.where ("? = Поиск", Params [ : filter_by] == "истина") \t \t еще \t \t @people = Person.all \t \t end' – lostrennie

+0

Какое значение 'Params [: filter_by]' должен быть в вашем примере? –

+0

Он фильтрует индекс по положению каждого peoson (т. Е. Персонала, студента, преподавателя), этот новый фильтр должен теперь фильтровать, где факультет принимает новых студентов. – lostrennie