在Rails中,我已经实现了Searchkick,使其正常工作,即用户可以在我的搜索框中搜索并获得正确的搜索结果,被带到电影#index页面:
视图:
我已将Twitter的typeahead.js包含在我的供应商资产中并确认它已加载。我可以访问自动完成终端,获取如下的JSON数据:
视图:
<%= form_tag movies_path, method: :get, :id=>"search" do %>
<%= text_field_tag :query, params[:query], class: 'form-control', id: "movie_search" %>
<button type="submit" class="btn btn-default">Search</button>
<% end %>
控制器:
def index
if params[:query].present?
@movies = Movie.search(params[:query], page: params[:page])
else
@movies = Movie.all.page params[:page]
end
end
但是我似乎无法让自动完成功能正常工作。这是我的自动完成操作:
路由:
resources :movies, only: :index do
collection do
get :autocomplete
end
end
Controller:
def autocomplete
render json: Movie.search(params[:query], {
fields: ["title^5", "description"],
limit: 10,
load: false,
misspellings: {below: 5}
}).map(&:title)
end
JS:
$("#movie_search").typeahead({
name: "movie",
remote: "/movies/autocomplete?query=%QUERY"
});
我已将Twitter的typeahead.js包含在我的供应商资产中并确认它已加载。我可以访问自动完成终端,获取如下的JSON数据:
http://localhost:3000/movies/autocomplete?query=war
.
[
"War Dogs",
"War Machine",
"Hart's War",
"Dirty Wars",
"Sorority Wars",
"Bride Wars",
"War Story",
"A War",
"War Pigs",
"War Witch"
]
然而,在我的搜索字段中,自动完成功能无法正常工作。是否有明显的错误?我在开发控制台中看不到任何错误,当我输入内容时,搜索似乎没有发生(即后端控制台没有出现任何变化)。