Jquery Rails:Filterrific不更新作用域。新范围赢得';看不见的东西
我正试图使用filterrific gem在我的索引页上创建一个基本过滤器。不幸的是,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
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 %>");