【发布时间】:2017-01-18 08:06:12
【问题描述】:
我刚刚按照 youtube 教程向我的搜索字段添加 jQuery-ui 自动完成功能。这是教程的链接:https://www.youtube.com/watch?v=iMz8HmrQ350。
由于某种原因,它无法正常工作,尽管阅读了教程并不断地重新检查语法。当我重新加载网络浏览器时,我没有收到任何错误,但是,当我在搜索字段中键入时,没有任何内容显示为下拉菜单。有趣的是,如果我将数组用于示例数据,它会起作用(下拉菜单会出现使用示例数组数据的建议)。但是当我尝试将它链接到我的帖子数据库时,它不再起作用。我在下面展示了两种方式的示例代码。
我的代码如下 - 非常感谢任何帮助我一直在尝试添加此功能一段时间尝试无数的教程和方法。越来越烦了哈哈。
我是编码新手,到目前为止我已经自学了。如果需要任何其他文件,请告诉我。
附言。我目前正在使用弹性搜索和搜索踢进行简单搜索。这可能与自动完成功能不起作用有关吗?我还在我的 gem 文件中使用 gem: "gem 'query-ui-rails'" 以防万一,这很重要。
posts.coffee
jQuery ->
$('#search').autocomplete
source: "/search_suggestions"
search_suggestions_controller.rb
class SearchSuggestionsController < ApplicationController
def index
render json: SearchSuggestion.terms_for(params[:term])
end
end
如果我使用数组作为样本数据,它可以工作 - 示例:
class SearchSuggestionsController < ApplicationController
def index
render json: %w[test test1]
end
end
模型:search_suggestion.rb
class SearchSuggestion < ApplicationRecord
attr_accessible :popularity, :term
def self.terms_for(prefix)
suggestions = where("term like ?", "#{prefix}_%")
suggestions.order("popularity desc").limit(10).pluck(:term)
end
def self.index_posts
Post.find_each do |post|
index_term(post.title)
post.title.split.each { |t| index_term(t) }
end
end
def self.index_term(term)
where(term: term.downcase).first_or_initialize.tap do |suggestion|
suggestion.increment! :popularity
end
end
end
任务文件:search_suggestions.rake
namespace :search_suggestions do
desc "Generate search suggestions from posts"
task :index => :environment do
SearchSuggestion.index_posts
end
end
【问题讨论】:
-
有人吗???拜托
标签: ruby-on-rails jquery-ui search autocomplete