首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过"link_to“应用搜索过滤器

通过"link_to“应用搜索过滤器
EN

Stack Overflow用户
提问于 2016-10-13 13:21:32
回答 1查看 67关注 0票数 0

因此,我有一个搜索过滤器在我的索引视图中完美地工作。控制器中的代码如下

代码语言:javascript
复制
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)

结束

在我看来,为我传递搜索筛选器的表单是

代码语言:javascript
复制
<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如下

代码语言:javascript
复制
/tutors?utf8=✓&subject_search=Science&lssubject_search=&ussubject_search=&jcsubject_search=&fees_search=&commit=Filter

我想问的是,我如何通过按钮传递过滤器?

那么,如果我点击"Math“或"English”,它等同于在表单中传递过滤器?我知道它很可能是link_to tutors_path(???),但是应该在括号中加入什么才能传递正确的过滤器呢?

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 14:27:50

我试过<%= link_to subs.name, tutors_path(:subject_search => subs.name %>,它看起来很管用。为了提供一些上下文,这里是视图以及subs.name是如何产生的。

代码语言:javascript
复制
<% tutor.subjects.each do |subs| %>
  <span class='badge'id='tutor-listing-badge'>
    <%= link_to subs.name, tutors_path(:subject_search => subs.name) %>
  </span>
<% end %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40012865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档