我正在研究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 rubyracer到编辑另一个线程上推荐的execjs中的runtimes.rb文件。我正在考虑从头开始,以便让一切工作,至少在这种情况下,我会重新学习我学到的很多东西,但我希望有人至少可以帮助我弄清楚会发生什么在这里。
感谢你们的帮助!
欢呼声, 亚历
修改
如果我从
更改行,它会起作用<%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
到
<%= javascript_include_tag :default, "data-turbolinks-track" => true %>
任何人都可以解释这意味着什么?以及如何以负面的方式改变我的应用程序?谢谢你的帮助!
答案 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 update
和bundle install
。你应该好好去。
答案 1 :(得分:1)
我有一个类似的问题,问题与现有的宝石无关,而是与它们的缓存版本有关。
以下步骤为我解决了这个问题:
rake assets:clean
这个过程对每个人都不一样,因为这里的问题与宝石的缓存版本有关,正如我已经提到的那样。
至少应该有助于找到解决方案。
答案 2 :(得分:0)
如果您使用的是rails 5.您需要使用npm install
安装node.js,以便rails自动为我们安装前端需求。这解决了我的问题。
答案 3 :(得分:0)
添加命令/ config / initialize / assets
Rails.application.config.assets.paths << Rails.root.join('node_modules')