Coffeescript/Javascript在服务器上不工作

Coffeescript/Javascript在服务器上不工作,javascript,ruby-on-rails,compilation,coffeescript,Javascript,Ruby On Rails,Compilation,Coffeescript,我已经实现了“无止境滚动”功能,如果有更多的帖子要显示,用户可以使用该功能继续向下滚动。我遵循Railscasts,它在本地工作得很好(javascripts和将对gem进行分页)。 但是,在服务器上,此功能不起作用。我所看到的只是简单的分页,而无休止的滚动并不适用。 我认为这与编译或预处理有关,因为javascript在本地运行良好 我已经尝试在本地运行bundle exec rake assets:precompile,并部署它。 此外,我还尝试在服务器上运行相同的命令。这个问题还没有解决

我已经实现了“无止境滚动”功能,如果有更多的帖子要显示,用户可以使用该功能继续向下滚动。我遵循Railscasts,它在本地工作得很好(javascripts和将对gem进行分页)。 但是,在服务器上,此功能不起作用。我所看到的只是简单的分页,而无休止的滚动并不适用。 我认为这与编译或预处理有关,因为javascript在本地运行良好

我已经尝试在本地运行bundle exec rake assets:precompile,并部署它。 此外,我还尝试在服务器上运行相同的命令。这个问题还没有解决

有人能很好地解释这个问题吗?相关文件的位置如下:

  • app/assets/javascripts/posts.js.coffee
  • app/views/index.js.erb
  • 假设js文件中的内容很好,因为该功能在本地服务器上非常有效。我几乎可以肯定,问题的根源在于汇编

    更新:

    来自Rails指南关于资产管道

    解释config/application.rb中的行

    在Gemfile中,我有

    group :assets do
      gem 'sass-rails',   '~> 3.2.3'
      gem 'coffee-rails', '~> 3.2.1'
      gem 'uglifier', '>= 1.0.3'
    end
    
    这是否意味着app/assets/javascripts/posts.js.coffee文件在部署之前没有正确编译,这就是问题所在?


    非常感谢您的帮助。

    如果发生这种情况,请尝试以下方法:

  • 清除本地环境中公用/资产文件夹中的所有内容。在rails根目录中,运行
    rm-rf public/assets
  • 清除浏览器缓存,因为它可能正在使用旧资源:
    按ctrl+F5或手动删除浏览器历史记录
  • 尝试重新启动服务器
    a。cap部署:重新启动(在本地终端中)和b。sudo服务nginx重启(在您的服务器中)
  • 如果#2和#3还不起作用,现在就开始部署<代码>cap部署
  • 为了解决这个问题,我学到了:

  • 一般情况下,资产不应在本地预编译;它们是在部署期间编译的,因此您不必运行
    bundle exec-rake-assets:precompile
  • 不建议在生产环境中“动态编译”
  • 您不必更改config/application.rb中的任何默认设置
  • 您不必关闭config.asset.debug来解决此问题
  • 阅读以下文档以更好地了解资产管道:


    如果问题与您所想的一样,您将在错误日志中找到信息。我应该如何开始检查/调试此问题?部署、跟踪日志并加载出现意外行为的页面。查看日志中是否有错误。@Deefur您能检查我的更新吗?当您运行
    rake assets:precompile
    时,
    app/assets/javascripts/posts.js.coffee
    被编译为原始javascript,然后通过链轮
    /=require.
    行被附加到类似于您的
    app/assets/application.js
    文件中。在部署之前,编译/连接的
    application.js
    将放入
    public/assets
    Bundler.require *Rails.groups(:assets => %w(development test))
    
    only loads gems from the assets group in your development and test environment. 
    This means that things like sass-rails and uglifier won't be available 
    in production, which then means that you won't be able to properly 
    compile/minify/whatever your assets on the fly in production 
    if you're making use of those gems.
    
    group :assets do
      gem 'sass-rails',   '~> 3.2.3'
      gem 'coffee-rails', '~> 3.2.1'
      gem 'uglifier', '>= 1.0.3'
    end