Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ';twitter-typeahead';gem语法错误_Javascript_Ruby On Rails_Ruby_Typeahead.js_Twitter Typeahead - Fatal编程技术网

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', -&gt;
  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的编辑。