Jquery Rails:Filterrific不更新作用域。新范围赢得';看不见的东西

Jquery Rails:Filterrific不更新作用域。新范围赢得';看不见的东西,jquery,ruby-on-rails,ruby,scope,filterrific,Jquery,Ruby On Rails,Ruby,Scope,Filterrific,我正试图使用filterrific gem在我的索引页上创建一个基本过滤器。不幸的是,filterrific似乎没有与我的数据库通信。当我运行服务器并使用下拉菜单以sort\u by进行排序时,会呈现新的部分,但不会更改范围 Started GET "/wikis?utf8=%E2%9C%93&filterrific%5Bsearch_query%5D=&filterrific%5Bsorted_by%5D=title_asc&_=1499629014459" for 1

我正试图使用filterrific gem在我的索引页上创建一个基本过滤器。不幸的是,filterrific似乎没有与我的数据库通信。当我运行服务器并使用下拉菜单以
sort\u by
进行排序时,会呈现新的部分,但不会更改范围

Started GET "/wikis?utf8=%E2%9C%93&filterrific%5Bsearch_query%5D=&filterrific%5Bsorted_by%5D=title_asc&_=1499629014459" for 127.0.0.1 at 2017-07-09 12:48:29 -0700
Processing by WikisController#index as JS
  Parameters: {"utf8"=>"✓", "filterrific"=>{"search_query"=>"", "sorted_by"=>"title_asc"}, "_"=>"1499629014459"}
  Wiki Load (0.5ms)  SELECT `wikis`.* FROM `wikis`
  Rendered wikis/_list.html.erb (4.2ms)
  Rendered wikis/index.js.erb (5.1ms)
Completed 200 OK in 8ms (Views: 6.9ms | ActiveRecord: 0.5ms)
另外,
default\u filter\u参数
也不会影响显示的范围

我定义的范围在控制台中工作得非常好,因此我确信它们是正确的

这是我的模型

 class Wiki < ActiveRecord::Base
  belongs_to :user
  has_many :collaborators
  validates :body, presence: true
  validates :title,
    presence: true,
    uniqueness: { case_sensitve: false, scope: [:year]},
    length: { minimum: 3, maximum: 254}

  enum category: [:adventure, :dual_sport, :sport, :naked,
    :touring, :cruiser, :custom, :dirt, :roadster]

  enum final_drive: [:belt, :chain, :shaft]

  filterrific(
    default_filter_params: { sorted_by: 'title_asc'},
    available_filters: [
      :sorted_by,
      :search_query
    ]
  )

  scope :search_query, lambda { |query|
    return nil  if query.blank?

    terms = query.downcase.split(/\s+/)

    terms = terms.map { |e|
      (e.gsub('*', '%') + '%').gsub(/%+/, '%')
    }
    num_or_conds = 2
    where(
      terms.map { |term|
        "(LOWER(students.first_name) LIKE ? OR LOWER(students.last_name) LIKE ?)"
      }.join(' AND '),
      *terms.map { |e| [e] * num_or_conds }.flatten
    )
  }

  scope :sorted_by, lambda { |sort_option|
    direction = (sort_option =~ /desc$/) ? 'desc' : 'asc'
    case sort_option.to_s
    when /^title_/
      order("wikis.title #{ direction }")
    when /^cylinders_/
      order("wikis.cylinders #{ direction }")
    when /^hp_/
      order("wikis.hp #{ direction }")
    when /^torque_/
      order("wikis.torque #{ direction }")
    when /^displacement_/
      order("wikis.displacement #{ direction }")
    when /^year_/
      order("wikis.year #{ direction }")
    else
      raise(ArgumentError, "Invalid sort option: #{ sort_option.inspect }")
    end
  }

  def self.options_for_sorted_by
    [
      ['Title (a-z)', 'title_asc'],
      ['HP (most)', 'hp_desc'],
      ['HP (least)', 'hp_asc'],
      ['Torque (most)', 'torque_desc'],
      ['Torque (least)', 'torque_asc'],
      ['Year (oldest)', 'year_desc'],
      ['Year (newest)', 'year_asc'],
      ['Displacement (most)', 'displacement_desc'],
      ['Displacement (least)', 'displacement_asc'],
      ['Cylinders (most)', 'cylinders_desc'],
      ['Cylinders (least)', 'cylinders_asc'],
    ]
  end
end
我的观点

views/wiki/index.html.erb

<div class="container">
  <div class="row">
    <div class="col-sm-8">
      <div>
        <%= form_for_filterrific @filterrific do |f| %>
        <div>
          Search
          <%= f.text_field(
            :search_query,
            class: 'filterrific-periodically-observed'
          ) %>
        </div>
        <div>
          Sorted by
          <%= f.select(:sorted_by, @filterrific.select_options[:sorted_by]) %>
        </div>
        <div>
          <%= link_to(
            'Reset filters',
            reset_filterrific_url,
          ) %>
        </div>
        <%= render_filterrific_spinner %>
        <% end %>

        <div>
          <%= render(
            partial: 'wikis/list',
            locals: { wikis: @wikis }
          ) %>
        </div>
      </div>
    </div>
  </div>
</div>

搜寻
按
views/wikis/_list.html.erb

<div id="filterrific_results">
  <% wikis.each do |wiki| %>
    <h4>
      <%= link_to wiki.title, wiki %>
      (<%= wiki.year %>)
    </h4>
  <% end %>
</div>

()
views/wiki/index.js.erb

<% js = escape_javascript(
  render(partial: 'wikis/list', locals: { wikis: @wikis })
) %>
$("#filterrific_results").html("<%= js %>");

$(“#filterrific_results”).html(“”);
我还在application.js中包含了
/=require filterrific/filterrific jquery

一定有什么东西我错过了把这一切联系在一起,但我不知道它可能是什么。我最初在数据库中使用sqlight3,并认为这就是问题所在,因此我改为mysql2,因为它在filterrific文档中被列为受支持


有什么想法吗?

最后,我发现了我的错误


在控制器中,我仍在定义
@wikis=Wiki.all
,而我本应将其定义为
@wikis=@filterrific.find
。这样,FilterRigf执行的搜索将存储在
@wikis
变量中

您提到您从sqlite切换到mysql是因为在文档中找到了与之相关的内容。我也有同样的问题(没有刷新),并且使用sqlite。你能指出你在文件里的什么地方找到这个吗?正如我想弄清楚的,在我的例子中,问题是使用sqlite还是其他什么。在文档的顶部,它提到了兼容性,并显示了一个图表。图表上显示了数据库适配器,并列出了mysql2和postgresql
<% js = escape_javascript(
  render(partial: 'wikis/list', locals: { wikis: @wikis })
) %>
$("#filterrific_results").html("<%= js %>");