繁体   English   中英

升级Rails 3.1时资产Rails 3.2.8的路由错误

[英]Routing Error for assets Rails 3.2.8 on Upgrading Rails 3.1

当我从3.1.1 Rails升级到3.2.8时,看到样式表,图像的路由错误确实令人沮丧。 尝试了“ bundle exec rails server”命令,还尝试了在文件中一个接一个地添加gems,也没有用:(

ActionController::RoutingError (No route matches [GET] "/stylesheets/application.css"):
  actionpack (3.2.8) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.8) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.8) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.8) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.8) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.8) lib/rails/engine.rb:479:in `call'
  railties (3.2.8) lib/rails/application.rb:223:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.8) lib/rails/rack/log_tailer.rb:17:in `call'
  rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service'

链接到Rails中的资产时,请始终使用asset_pathasset_url或依次调用它们的帮助函数之一( image_pathimage_urljavascript_include_tagstylesheet_link_tag )。

就您而言,它看起来像您在应用程序布局中对/stylesheets/application.css进行了硬编码。 只需将代码更改为类似

<%= stylesheet_link_tag :application %>

并且它应该正确指向/assets/application.css进行开发,并指向生产中的/assets/application-<sha1 hash>.css (编译资产时)。

另外,如果你有资产本地编译(如果您有任何东西public/assets是这样的话,你可能要rm -rf public/assets ,如果你在本地开发),那么你需要下面一行在您的config/application.rb

config.serve_static_assets = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM