2016-02-12 5 views
0

Я следовал руководству DHH. Все шло хорошо, пока я не добавил этот код room.coffeeНастройка Rails5 Action Cable

$(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: unexpected if

извлеченного источник (около линии # 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

Помогите оценить!

ответ

0

Ошибка Javascript не связана с кабелем действия. Вы получите его, потому что у вашего 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(); 
    } 
}); 
+0

Неловко - мой плохой. Отбирается так легко. Большое спасибо за очень быстрый ответ. –

Смежные вопросы