2016-10-13 2 views
0

Итак, у меня есть фильтр поиска, отлично работающий в моем индексном представлении. Код в контроллере следующимФильтр поиска, примененный через «link_to»

def index 
    @tutor = Tutor.where(:admin => false) 
    @tutor_array = [] 

@tutor_array << @tutor.fees_search(params[:fees_search]) if params[:fees_search].present? 
@tutor_array << @tutor.subject_search(params[:subject_search]) if params[:subject_search].present? 
@tutor_array << @tutor.lssubject_search(params[:lssubject_search]) if params[:lssubject_search].present? 
@tutor_array << @tutor.ussubject_search(params[:ussubject_search]) if params[:ussubject_search].present? 
@tutor_array << @tutor.jcsubject_search(params[:jcsubject_search]) if params[:jcsubject_search].present? 

@tutor_array.each do |tutor| 
    ids = @tutor.merge(tutor).map(&:id) 
    @tutor = Tutor.where(id: ids) 
end 
@tutor = @tutor.sort_by { |tutor| tutor.rating.rating }.reverse 
@tutor = @tutor.paginate(:page => params[:page], :per_page => 2) 

конец

И на мой взгляд, форма, которая проходит в поисковых фильтров для меня

<form class='form-inline'> 
    <%= form_tag(tutors_path, method: :get) do %> 
    <div class='row', id='filter-form'> 
     <div class='form-group'> 
     <%= label_tag 'subject_search', 'Primary Subject' %> 
     <% subject_array = Subject.all.map { |subject| [subject.name] } %> 
     <%= select_tag 'subject_search', options_for_select(subject_array, :selected => params[:subject_search]), :include_blank => true, class:'form-control' %> 
     <%= label_tag 'lssubject_search', 'Lower Sec Subject' %> 
     <% lssubject_array = Lssubject.all.map { |lssubject| [lssubject.name] } %> 
     <%= select_tag 'lssubject_search', options_for_select(lssubject_array, :selected => params[:lssubject_search]), :include_blank => true, class:'form-control' %> 
     <%= label_tag 'ussubject_search', 'Upper Sec Subject' %> 
     <% ussubject_array = Ussubject.all.map { |ussubject| [ussubject.name] } %> 
     <%= select_tag 'ussubject_search', options_for_select(ussubject_array, :selected => params[:ussubject_search]), :include_blank => true, class:'form-control' %> 
     </div> 
    </div> 
    <div class='row', id='filter-form2'> 
     <div class='form-group'> 
     <%= label_tag 'jcsubject_search', 'JC Subject' %> 
     <% jcsubject_array = Jcsubject.all.map { |jcsubject| [jcsubject.name] } %> 
     <%= select_tag 'jcsubject_search', options_for_select(jcsubject_array, :selected => params[:jcsubject_search]), :include_blank => true, class:'form-control' %> 
     <%= label_tag 'fees_search', 'Max Fees' %> 
     <%= select_tag 'fees_search', options_for_select((10..150).step(10), :selected => params[:fees_search]), :include_blank => true, class:'form-control' %> 
     <%= submit_tag 'Filter', class: 'btn btn-primary btn-xs' %> 
     </div> 
    </div> 
    <% end %> 
    <div id='filter-reset'> 
     <%= link_to 'Reset Filters', tutors_path, class: 'btn btn-primary btn-xs' %> 
    </div> 
    </form> 

И когда фильтр проходит в пример или полученный URL выглядит следующим образом:

/tutors?utf8=✓&subject_search=Science&lssubject_search=&ussubject_search=&jcsubject_search=&fees_search=&commit=Filter 

Что я хотел бы задать, как я могу пройти n фильтры через кнопку?

enter image description here

Так что, если бы я был нажать на «Math» или «английский» эквивалент для прохождения в фильтре через форму? Я понимаю, что это, скорее всего, будет link_to tutors_path(???), но что должно пойти в круглые скобки, чтобы передать правильные фильтры?

ответ

0

Я пробовал <%= link_to subs.name, tutors_path(:subject_search => subs.name %> и кажется, что он работает. Чтобы обеспечить некоторый контекст, вот взгляд и как возникает subs.name.

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