【问题标题】:Rails jquery can not load in any eventRails jquery在任何情况下都无法加载
【发布时间】:2016-05-15 15:09:14
【问题描述】:

我已经尝试了 stackoverflow 中的所有解决方案,但我仍然无法在 rails 上加载 jquery。它适用于 localhost 但不适用于 heroku。

所以,这是我的application.js 文件

//= require jquery
//= require bootstrap
//= require jquery_ujs
//= require_tree .

这里是application.css 文件

 *= require_tree .
 */

这是我的 gem 文件;

source 'https://rubygems.org'

gem 'rails',                '4.2.0'
gem 'json',             '~> 1.8.2'
gem 'bcrypt',               '3.1.7'

gem 'bootstrap-sass',       '3.2.0.0'
gem 'sass-rails',           '5.0.1'   
gem 'uglifier',             '2.5.3'
gem 'coffee-rails',         '4.1.0'
gem 'jquery-rails',         '4.0.3'
#//= require turbolinks TO ASSETS gem 'turbolinks',           '2.3.0'
gem 'jbuilder',             '2.2.3'
gem 'sdoc',                 '0.4.0', group: :doc
gem "mailboxer"
gem "select2-rails"

group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

group :test do
  gem 'minitest-reporters', '1.0.5'
  gem 'mini_backtrace',     '0.1.3'
  gem 'guard-minitest',     '2.3.1'
end

group :production do
  gem 'pg',             '0.17.1'
  gem 'rails_12factor', '0.0.2'
end

这是我的application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>...</title>
  <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="initial-scale = 1.0,maximum-scale = 1.0" />



    <%= javascript_include_tag 'application', 'data-turbolinks-track' => false %>
    <%= stylesheet_link_tag 'application', media: 'all',
                                           'data-turbolinks-track' => false %>

  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

有趣的是,控制台没有给出关于 jquery 的错误,但我的滑块不起作用。而且一些css更改并没有反映到heroku(我做了预编译)

【问题讨论】:

  • 在生产模式下本地尝试:你可能会遇到同样的问题,调试起来会容易得多。此外,在您使用的任何浏览器中使用开发工具:它们会为您指出丢失的文件,您可以从那里返回以尝试找出文件不存在的原因。
  • 这里是错误:Uncaught ReferenceError: jQuery is not defined. 为什么它不加载 jquery?。它列在 application.js 文件的首位
  • 使用 rails 4,您不需要预编译资产 - 您只需弹出 rails_12factor gem,它应该设置您的应用程序在您推送和提供静态资产时编译 heroku 上的资产。 devcenter.heroku.com/articles/rails-4-asset-pipeline
  • 您可能希望从您的 git 存储库中清除预编译的资产并重新部署。

标签: javascript jquery ruby-on-rails ruby heroku


【解决方案1】:

由于 Heroku 默认预编译,我会说错误可能是您有一个“污染”的预编译资产(当您在 public/assets 中可能有 8-10 个 application.js 变体时)。

我可能——当然——完全错了,很乐意删除这篇文章,但你不妨试试:

$ rake assets:clean
$ git add .
$ git commit -a -m "Assets"
$ git push heroku master

$ heroku rake assets:clean

【讨论】:

    【解决方案2】:

    这似乎是资产编译问题。对于 heroku,请确保您的生产环境配置良好,查看您的 /config/production.rb,并确保您有以下配置:

    config.serve_static_files = false
    config.assets.compile = false
    config.assets.digest = true
    

    检查上述配置后,确保您的public/assets 文件夹不在.gitignore 中。

    然后在本地预编译资产,然后重新部署到heroku,运行以下命令: rake assets:precompile RAILS_ENV=production

    这可能需要几分钟,完成后您可以提交并推送到 heroku:

    git add .
    git commit -m "Precompiled assets for heroku"
    git push heroku master
    

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 2018-02-05
      相关资源
      最近更新 更多