Sprockets :: FileNotFound在StaticPages #home中

时间:2014-03-22 19:00:09

标签: jquery ruby-on-rails ruby sprockets

我正在研究Michael Hartl的ruby on rails教程,我遇到了一个我几天都无法修复的问题。

尝试加载页面时,chrome会显示:

Sprockets::FileNotFound in StaticPages#home
Showing /Users/azimmer/rails_projects/sample_app/app/views/layouts/application.html.erb where line #7 raised:

couldn't find file 'jquery'
  (in /Users/azimmer/rails_projects/sample_app/app/assets/javascripts/application.js:13)
Extracted source (around line #7):
4
5
6
7
8
9
10

      <title><%= full_title(yield(:title)) %></title>
      <%= stylesheet_link_tag "application", media: "all",
                                             "data-turbolinks-track" => true %>
      <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
      <%= csrf_meta_tags %>
      <%= render 'layouts/shim' %>
      </head>

Rails.root: /Users/azimmer/rails_projects/sample_app

这是我的gemfile:

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.2'
gem 'bootstrap-sass', '2.3.2.0'
gem 'bcrypt-ruby', '3.1.2'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'

gem 'sass-rails', '4.0.2'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '2.3.0'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
gem 'factory_girl_rails', '4.2.1'

end

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

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

这是我的application.html.erb文件:

<!DOCTYPE html>
<html>
  <head>
    <title><%= full_title(yield(:title)) %></title>
    <%= stylesheet_link_tag "application", media: "all",
                                           "data-turbolinks-track" => true %>
    <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
    <%= csrf_meta_tags %>
    <%= render 'layouts/shim' %>
  </head>
  <body>
    <%= render 'layouts/header' %>
    <div class="container">
      <%= yield %>
      <%= render 'layouts/footer' %>
      <%= debug(params) if Rails.env.development? %>
    </div>
  </body>
</html>

我的application.js文件完全不受影响。我已尝试过从添加gem ruby​​racer到编辑另一个线程上推荐的execjs中的runtimes.rb文件。我正在考虑从头开始,以便让一切工作,至少在这种情况下,我会重新学习我学到的很多东西,但我希望有人至少可以帮助我弄清楚会发生什么在这里。

感谢你们的帮助!

欢呼声, 亚历

修改

如果我从

更改行,它会起作用
<%= javascript_include_tag 'application', "data-turbolinks-track" => true %>

<%= javascript_include_tag :default, "data-turbolinks-track" => true %>

任何人都可以解释这意味着什么?以及如何以负面的方式改变我的应用程序?谢谢你的帮助!

4 个答案:

答案 0 :(得分:1)

将以下行添加到app / assets / javascripts / application.js文件

//= require jquery
//= require jquery_ujs

还要确保您已运行bundle install

在此次运行bundle show jquery-rails之后验证gem是否已成功安装。

修改

更新您的Gemfile,如下所示: 所有环境中都需要jquery-rails和其他一些宝石列在test组下,因此您无法在开发环境中访问它们。 更正Gemfile如下:

gem 'sass-rails', '4.0.2'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '2.3.0'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.1'
end

此后bundle updatebundle install。你应该好好去。

答案 1 :(得分:1)

我有一个类似的问题,问题与现有的宝石无关,而是与它们的缓存版本有关。

以下步骤为我解决了这个问题:

  1. 指定受影响的宝石的实际版本
  2. 通过rake assets:clean
  3. 清理资产管道
  4. 清理浏览器的缓存
  5. 再次启动服务器
  6. 这个过程对每个人都不一样,因为这里的问题与宝石的缓存版本有关,正如我已经提到的那样。

    至少应该有助于找到解决方案。

答案 2 :(得分:0)

如果您使用的是rails 5.您需要使用npm install安装node.js,以便rails自动为我们安装前端需求。这解决了我的问题。

答案 3 :(得分:0)

添加命令/ config / initialize / assets

Rails.application.config.assets.paths << Rails.root.join('node_modules')