0
我正在使用Searchkick gem和typeahead.js將搜索輸入的自動完成功能放在一起。繼創業板的tutorial我設法讓我的模型,控制器和路由設置的指示:Rails with typeahead.js - 400(Bad Request)
餐廳型號
class Restaurant < ActiveRecord::Base
searchkick text_start: [:name], autocomplete: [:name], suggest: [:name]
def search_data
{ name: name }
end
end
搜索控制器
class SearchController < ApplicationController
def index
if params[:query].present?
@restaurants = Restaurant.search(params[:query], suggest: true)
else
@restaurants = []
end
end
def autocomplete
render json: Restaurant.search(params[:query], autocomplete: true, limit: 10).map(&:name)
end
end
路線
resources :search, :only => [:index] do
member do
get :autocomplete
end
end
搜索部分
<%= form_tag search_index_path, method: :get do |f| %>
<%= text_field_tag :query, params[:query], id: "autocomplete" %>
<%= submit_tag "Search" %>
<% end %>
我有一種感覺,它是一個的給我麻煩的JS。我鬆散繼創業板的頁面上docs而一些職位,這是我結束了:
$(function() {
var restaurants = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('restaurant'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: { "url":"/search/autocomplete?query=%QUERY" }
});
restaurants.initialize();
$('#autocomplete').typeahead(null, {
displayKey: 'name',
source: numbers.ttAdapter()
});
});
通知行:
remote: { "url":"/search/autocomplete?query=%QUERY" }
返回到視圖,一旦我開始鍵入我的輸入框中我得到這個錯誤:
GET http://localhost:3000/search/autocomplete?query=%QUERY 400 (Bad Request)
另外我在控制檯收到此錯誤:
ERROR bad URI `/search/autocomplete?query=%QUERY'.
QUERY
沒有被插入。我該如何解決?
你得到不好的URI,因爲你的路線是無效的。你應該使用'collection'而不是'member'。 'member'會產生一個看起來像'/ search /:id/autocomplete'的路徑 – AbM
@AbM還有什麼我需要做的,因爲它在將'member'改爲'collection'後仍然給我同樣的錯誤。 –
如果有幫助,這是如何解釋路由:'autocomplete_search_index GET/search/autocomplete(。:format)' –