Ruby on rails 3.1 Rails 3.1未解析的资产
问题 我有一个Rails 3.0.4应用程序,我按照来自的说明升级到3.1.4 现在我遇到了资产的问题,因为它们没有得到解决,在服务器日志中给出如下消息:Ruby on rails 3.1 Rails 3.1未解析的资产,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,问题 我有一个Rails 3.0.4应用程序,我按照来自的说明升级到3.1.4 现在我遇到了资产的问题,因为它们没有得到解决,在服务器日志中给出如下消息: Started GET "/assets/application.css" for 127.0.0.1 at 2012-04-08 03:57:13 -0500 Served asset /application.css - 404 Not Found (15ms) ActionController::RoutingError (No ro
Started GET "/assets/application.css" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.css - 404 Not Found (15ms)
ActionController::RoutingError (No route matches [GET] "/assets/application.css"):
Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (14.3ms)
Started GET "/assets/application.js" for 127.0.0.1 at 2012-04-08 03:57:13 -0500
Served asset /application.js - 404 Not Found (35ms)
ActionController::RoutingError (No route matches [GET] "/assets/application.js"):
这些文件位于assets
目录中:
$ ls app/assets/*/application*
app/assets/javascripts/application.js app/assets/stylesheets/application.css
其中包括:
$ cat app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require_self
//= require_tree .
$ cat app/assets/stylesheets/application.css
/*
*= require_self
*= require_tree .
*/
我想一切都配置好了。在这里,我放置了一些文件块:
,包含所需的资产gems:Gemfile
group :assets do gem 'sass-rails', '~> 3.1.3' gem 'coffee-rails', '~> 3.1.0' gem 'uglifier' end
,已启用资产:application.rb
config.assets.enabled = true config.assets.version = '1.0'
:development.rb
config.assets.compress = false config.assets.debug = true
- 最后<代码>应用程序.html.erb布局:
<%= stylesheet_link_tag 'application' %> <%= javascript_include_tag 'application' %>
- 然后我执行
rake资产:预编译
:
然后,执行服务器($ bundle exec rake assets:precompile /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
)并再次请求图像(rails s
):rails.png
所以怎么了?,我做错什么了吗?据我所知,所有预编译的资产都被移动到资产文件夹中 这意味着javascript、样式表和图像的内容将组合在
localhost:3000/assets
中
所以如果你搜索
localhost:3000/assets/images/rails.png
它应该位于
app/assets/images/images/rails.png
。
因此,404
为了保持目录整洁,我建议将所有图像保存在app/assets/images/中,并使用
asset\u path('rails.png')
将它们指向生产模式吗?您是否运行过bundle exec rake assets:precompile?另外,您是否包含链轮库?@pjumble还没有,即使我处于开发环境下,这是否必要?我假设您处于生产模式,但不,在开发模式下,您不必预编译资产。如果从URL中删除/images/
,图像是否有效?(http://localhost:3000/assets/rails.png
)@pjumble它能工作<代码>http://localhost:3000/assets/rails.png谢谢
$ bundle exec rake assets:precompile
/usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
/usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
$ rails s
=> Booting WEBrick
=> Rails 3.1.4 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
/usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/http/mime_type.rb:101: warning: already initialized constant PDF
[2012-04-08 04:53:06] INFO WEBrick 1.3.1
[2012-04-08 04:53:06] INFO ruby 1.9.2 (2012-02-14) [i686-linux]
[2012-04-08 04:53:06] INFO WEBrick::HTTPServer#start: pid=16702 port=3000
Started GET "/assets/images/rails.png" for 127.0.0.1 at 2012-04-08 04:53:14 -0500
Served asset /images/rails.png - 404 Not Found (38ms)
ActionController::RoutingError (No route matches [GET] "/assets/images/rails.png"):
Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (125.2ms)