在rails5中使用咖啡脚本的正确方法

时间:2018-04-26 12:54:48

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

我正在开发我的第一个rails应用程序,并尝试通过单击页面中的另一个链接在我的视图中显示/隐藏特定的Web元素。以下是我的观点,

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

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

where" secondary-link"是显示/隐藏我的表的链接。首先加载页面时,表格会被我的application.css.scss

中的以下行隐藏
#secondary{
 display: none;
}

另外,我在我的assets / 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 :(得分:0)

我不知道为什么会出现这个问题,但我通过在我的application.js文件中直接使用jquery来修复它并删除了咖啡文件。我的js文件具有以下编码来处理事件。

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

我已停止并重新启动服务器,这很有效。