Javascript ';twitter-typeahead';gem语法错误
我正在尝试向我的应用程序中添加Javascript ';twitter-typeahead';gem语法错误,javascript,ruby-on-rails,ruby,typeahead.js,twitter-typeahead,Javascript,Ruby On Rails,Ruby,Typeahead.js,Twitter Typeahead,我正在尝试向我的应用程序中添加twitter-typeaheadgem,并遵循以下教程:。我得到了一些不同的错误。使用过Typeahead的人是否认为本教程有明显的错误?还是我做错了什么 以下是我所做的: SyntaxError: [stdin]: unexpected & (in home/website/app/assets/javascripts/search.js.coffee) SyntaxError: [stdin]:2:1: unexpected indentati
twitter-typeahead
gem,并遵循以下教程:。我得到了一些不同的错误。使用过Typeahead的人是否认为本教程有明显的错误?还是我做错了什么
以下是我所做的:
SyntaxError: [stdin]: unexpected &
(in home/website/app/assets/javascripts/search.js.coffee)
SyntaxError: [stdin]:2:1: unexpected indentation
(in home/website/app/assets/javascripts/search.js.coffee)
application.html.erb
<div id="search-wrapper">
<input class="typeahead" type="text" placeholder="Search">
</div>
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
控制器/用户\u controller.rb
<div id="search-wrapper">
<input class="typeahead" type="text" placeholder="Search">
</div>
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
错误:
SyntaxError: [stdin]: unexpected &
(in home/website/app/assets/javascripts/search.js.coffee)
SyntaxError: [stdin]:2:1: unexpected indentation
(in home/website/app/assets/javascripts/search.js.coffee)
这两个错误都指向我脑海中的这一行:
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
然后,如果我在search.js.coffee的第一行删除“->”中的“&”,则会出现以下错误:
第二个错误:
SyntaxError: [stdin]: unexpected &
(in home/website/app/assets/javascripts/search.js.coffee)
SyntaxError: [stdin]:2:1: unexpected indentation
(in home/website/app/assets/javascripts/search.js.coffee)
我玩了一些缩进,但这个错误我无法消除
更新:我按照NickM的建议更改了我的search.js.coffee代码,但现在我得到了一个不同的错误
更新了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
})
$(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)
尝试将其粘贴到您的Coffeescript文件中。看起来里面有几个有趣的角色和一个无与伦比的outdent:
$(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
}
)
此外,您可能会发现js2coffee工具很有用,可以找到它
如果您将Coffeescript文件的内容粘贴到右侧窗格中,它将显示您是否有语法错误,或者是否出现有趣的字符。我一直用这个。希望有帮助。还有很多其他很棒的教程。也许你会有更多的运气:
谷歌搜索会产生更多的结果。现在我得到了一个不同的结果,“出乎意料(”错误消息。我更新了我的问题。您可能需要在第一行的逗号后添加->以使其成为一个函数。如果这不起作用,我将查看您正在使用的文本编辑器。它可能错误地翻译空格或制表符,并导致缩进错误。请参阅我对js2coffee的编辑。