我正在研究 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
这是我的 gem 文件:
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 rubyracer,到在另一个线程上推荐的 execjs 中编辑 runtimes.rb 文件。我正在考虑从头开始,以便让一切正常工作,至少在这种情况下我会重新学习我学到的很多东西,但我希望有人至少可以帮助我弄清楚发生了什么就在这里。
非常感谢您的帮助!
干杯, 亚历克斯
编辑
如果我更改线路,它就会起作用
<%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
至
<%= javascript_include_tag :default, "data-turbolinks-track" => true %>
谁能解释一下这是什么意思?做出这样的改变会对我的申请产生怎样的负面影响?谢谢您的帮助!
最佳答案
将以下行添加到 app/assets/javascripts/application.js 文件
//= require jquery
//= require jquery_ujs
还要确保您已运行bundle install
。
在此之后运行 bundle show jquery-rails
来验证 gem 是否已成功安装。
编辑
更新您的 Gemfile,如下所示:
jquery-rails
和所有环境中所需的其他一些 gem 都列在 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 更新
和 bundle 安装
之后。你应该可以走了。
关于jquery - sprockets::StaticPages#home 中未找到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22582097/