【问题标题】:Routing Error for assets Rails 3.2.8 on Upgrading Rails 3.1关于升级 Rails 3.1 的资产 Rails 3.2.8 的路由错误
【发布时间】:2012-08-13 06:45:22
【问题描述】:

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

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'

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2 ruby-on-rails-3.1 asset-pipeline


    【解决方案1】:

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

    在您的情况下,看起来您在应用程序布局中硬编码了/stylesheets/application.css。简单地将代码更改为类似

    <%= stylesheet_link_tag :application %>
    

    它应该正确指向/assets/application.css 用于开发,/assets/application-&lt;sha1 hash&gt;.css 用于生产(编译资产时)。

    此外,如果您有本地编译的资产(如果您在 public/assets 中有任何内容,就是这种情况。如果您在本地开发,您可能需要 rm -rf public/assets),那么您需要在 @ 987654333@:

    config.serve_static_assets = true
    

    【讨论】:

    • 'screen' %> 'print' %> 这在我的 application.html 中是这样的.erb,在 rails 3.1 上运行良好
    • 好的,我用更多信息更新了答案。我猜你在public/assets 中有文件。也可能是其中一些文件中包含硬编码链接,尽管很难想象该链接会指向 application.css。
    • 我有这个到 gem 文件 'group :assets do gem 'sass-rails', '~> 3.2.3' gem 'coffee-rails', '~> 3.2.1' gem ' uglifier', '>= 1.0.3' end' 删除“组:资产做”工作
    • 听起来您没有将资产加载为开发环境的一部分(除非您在本地的“生产”环境中运行?)。尝试在 config/application.rb 中使用这一行:Bundler.require(*Rails.groups(:assets =&gt; %w(development test)))
    • 它的应用程序已有一年多的历史了,所以是的,我没有做任何特定于开发或产品的事情。谢谢
    猜你喜欢
    • 2012-01-23
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多