ExecJS::RuntimeError<%=javascript_include_tag'应用程序

ExecJS::RuntimeError <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

本文关键字:include tag 应用程序 RuntimeError lt ExecJS javascript      更新时间:2023-09-26

我试图使用will_paginate gem向rails应用程序添加无限滚动,然后使用AJAX获取下一个分页页面,但我的javascript没有被呈现。

似乎是涡轮连杆造成了这个问题。当我删除涡轮链接时,错误会消失,但脚本不再运行。下面是我的日志和脚本。有人能帮我吗?

这是我从日志中得到的错误:

ActionView::Template::Error (SyntaxError: [stdin]:5:2: unexpected if):
     5:   <!-- had to add the script to override JS error -->
     6:   <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
     7:   <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
     8:   <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
     9:   <%= csrf_meta_tags %>
    10: </head>
    11: <body>
  app/views/layouts/application.html.erb:8:in `_app_views_layouts_application_html_erb___2390735874352053488_70114430886900'

我的链接.js.coffee

jQuery ->
$(window).scroll ->
    console.log('working')
    if $(window).scrollTop() > $(document).height() - $(window).height() - 50
    alert('next page')

现在,如果我去掉脚本中将滚动位置与文档高度和窗口高度进行比较的部分,代码就可以工作了。

jQuery ->
$(window).scroll ->
    console.log('working')

如果您需要查看任何其他信息,我很乐意提供。

对我来说,这看起来像是缩进问题。Coffeescript对空格敏感。尝试

jQuery ->
  $(window).scroll ->
    if $(window).scrollTop() > ($(document).height() - $(window).height() - 50)
      alert('next page')

这里的区别是

  • scroll方法调用缩进到jQuery onReady函数中
  • if下缩进alert

至于涡轮链接的问题,你不能简单地使用jQuery ->(onReady快捷方式)来加载所有内容。您可能需要添加另一个侦听器。

所以不是:

jQuery ->
  $(window).scroll ->
    ...

你可以试试这样的东西:

onPageReady = ->
  $(window).scroll ->
    if ...
$(document).ready(onPageReady)
$(document).on('page:load', onPageReady)

非常像这里描述的:Rails4:如何将$(document).ready()与turbo链接一起使用

希望这能有所帮助。