Правильный способ использования сценария кофе в рельсах5 - PullRequest
0 голосов
/ 26 апреля 2018

Я разрабатываю свое первое приложение rails и пытаюсь показать / скрыть определенный веб-элемент в моем представлении, щелкнув другую ссылку на моей странице. Ниже мой взгляд,

%p
 = link_to 'Show additional details', "#", id: "secondary-link"

%table{:id => "secondary"}
 %tr
  %th Key
  %th Value

где «вторичная ссылка» - это ссылка, которая показывает / скрывает мою таблицу. Когда страница загружается первой, таблицу скрывают следующей строкой в ​​моем application.css.scss

#secondary{
 display: none;
}

Кроме того, я добавил следующий скрипт в мои активы / javascripts / application.coffee

@myFunction = (variable) ->
  $(document).on "page:change", ->
    $('#secondary-link').click ->
      $('#secondary').toggle()

Но таблица не отображается, когда я нажимаю на ссылку на моей странице. Тем не менее, в моей консоли, если я ввожу «myFunction», я получаю функцию

ƒ (variable) {
 return $(document).on("page:change", function() {
   return $('#secondary-link').click(function() {
     return $('#secondary').toggle();
   });
 });
}

и я получаю сообщение об ошибке при вводе myFunction ()

Uncaught TypeError: Cannot read property 'on' of undefined
at myFunction (application.self-4e74630fd8894bca1e22a8d66c1d7ebfaa39edf4f40e058aae03fc788a9f6d94.js?body=1:3)
at <anonymous>:1:1

Ваша помощь приветствуется.

1 Ответ

0 голосов
/ 26 апреля 2018

Я не уверен, почему эта проблема, но я исправил ее с помощью jquery непосредственно в файле application.js и удалил файл coffee. Мой js-файл имеет следующую кодировку для обработки события.

$(document).ready(function() {
  $('#secondary-link').click(function(event){
     return $('#secondary').toggle();
  });
});

Я остановил и перезапустил сервер, и это сработало.

...