设置Rails5操作电缆

时间:2016-02-12 15:24:17

标签: ruby-on-rails coffeescript ruby-on-rails-5

我正在关注DHH的教程。一切顺利,直到我将此代码添加到room.coffee

$(document).on 'keypress', '[data-behavior~=room_speaker]', (event) ->
  if event.keyCode is 13 # return = send
  App.room.speak event.target.value
  event.target.value = ''
  event.preventDefault()

一旦我这样做,我得到:

  

SyntaxError:[stdin]:15:3:如果

则意外

提取的来源(第8行):

6    <%= action_cable_meta_tag %>
7
8    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
9    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  </head>

我正在使用Rails 5.0.0.beta2,Ruby 2.3.0,并在OS X 10.11.3上运行

我在application.html.erb

上更改某些内容(对于看似正确的代码?)时,错误似乎出现在room.coffee

帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

Javascript错误与Action Cable无关。你得到它是因为你的if没有身体。

您的代码,因为它当前缩进,转换为无意义的内容,因此错误

$(document).on('keypress', '[data-behavior~=room_speaker]', function(event) {
    if (event.keyCode === 13)
    App.room.speak(event.target.value);
    event.target.value = '';        
    return event.preventDefault();
});

这就是你想要的。请注意缩进。

$(document).on 'keypress', '[data-behavior~=room_speaker]', (event) ->
  if event.keyCode is 13 # return = send
    App.room.speak event.target.value
    event.target.value = ''
    event.preventDefault()

转换为

$(document).on('keypress', '[data-behavior~=room_speaker]', function(event) {
    if (event.keyCode === 13) {
        App.room.speak(event.target.value);
        event.target.value = '';        
        return event.preventDefault();
    }
});