Я пытаюсь добавить жемчужину twitter-typeahead
к моему приложению, и я следую этому руководству: http://blog.sed.hu/2014/07/11/ruby-on-rails-search-autocomplete-with-sunspot-solr-and-twitter-typeahead-js-part-2/. Я получаю несколько разных ошибок. Кто-нибудь, кто использовал Typeahead, видит что-то невероятно неправильное в учебнике? Или я делаю что-то неправильно?«синтаксические ошибки жука« twitter-typeahead »
Вот что я сделал:
application.html.erb
<div id="search-wrapper">
<input class="typeahead" type="text" placeholder="Search">
</div>
приложение/активы/JavaScripts/search.js.coffee
$(document).on 'ready page:load', ->
users = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/users/index?q=%QUERY'
}
})
users.initialize()
$('input.typeahead').typeahead(
{
hint: true,
highlight: true,
minLength: 1
},
{
name: 'things',
displayKey: 'title',
source: User.all
})
Контроллеры/users_controller.rb
def index
if params[:search]
@user = User.search(params[:search]).order("created_at DESC")
respond_to do |format|
format.json do
results = @user.results.map do |user|
{ title: user.name }
end
render json: results
end
else
@user = User.order("created_at DESC")
end
end
ОШИБКИ:
Обе ошибки указывают на этой линии в моей голове:
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
, и если я удалю его, ошибки исчезнут, но это, очевидно, не предпочтительное решение.
Первая ошибка:
SyntaxError: [stdin]: unexpected &
(in home/website/app/assets/javascripts/search.js.coffee)
Тогда, если я удалить "&" от "- >" на первой линии search.js.coffee, я получаю эту ошибку:
Вторая ошибка:
SyntaxError: [stdin]:2:1: unexpected indentation
(in home/website/app/assets/javascripts/search.js.coffee)
Я играл с некоторыми O f отступ, но эта ошибка я не мог уйти.
UPDATE: Я изменил свой search.js.coffee код согласно предложению NickM, но теперь я получаю другую ошибку.
Обновлено search.js.coffee
$(document).on 'ready page:load',
users = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: '/users/index?q=%QUERY'
}
})
users.initialize()
$('input.typeahead').typeahead(
{
hint: true,
highlight: true,
minLength: 1
},
{
name: 'things',
displayKey: 'title',
source: User.all
}
)
Новая ошибка
SyntaxError: [stdin]:6:11: unexpected (
(in /home/website/app/assets/javascripts/search.js.coffee)
Теперь я получаю другое «непредвиденное» сообщение об ошибке. Обновленный мой вопрос. –
Возможно, вам придется добавить -> после запятой в первой строке, чтобы сделать его функцией. заботиться об этом, я бы посмотрел на текстовый редактор, который вы используете. Возможно, это неверно переводит пробелы или вкладки и вызывает ошибку с отступом. См. мое правление о js2coffee. –