application.css 将 Rails 3.2.17 升级到 Rails 4.0.0 时更改了路径

application.css changed path when upgrading Rails 3.2.17 to Rails 4.0.0

我正在将 Rails 3.2.17 升级到 Rails 4.0.0,我的应用无法再检索它的资产。

如果我访问页面源代码,我可以看到该应用正在尝试从以下位置加载 css:

/stylesheets/jackapp/application.css?body=1

如果我删除 'stylesheets',我会在下面看到样式表:

/jackapp/application.css?body=1

尝试加载时的相同行为 application.js。它试图获得

/javascripts/jackapp/application.css?body=1

但 js 位于:

/jackapp/application.css?body=1

有什么想法吗?为什么 Rails 4 将 'stylesheet' 附加到该路径?

我没有更改 application.html.erb 即:

<!DOCTYPE html>
<html>
  <head>
    <%= stylesheet_link_tag "application", :media => "all" %>
    <%= stylesheet_link_tag "print.css", media: "print" %>
    <title><%= yield :title %> - GOV.UK</title>
    <%= yield :head %>
  </head>

我还从 Gemfile 中删除了 group :assets 并替换了

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require *Rails.groups(assets: %w(development test))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

与:

Bundler.require(:default, Rails.env)

此外,我还遵循了以下说明:

http://railscasts.com/episodes/415-upgrading-to-rails-4

而且我没有任何失败的测试。

如何告诉应用程序以正确的路径加载资产? 谢谢。

杰克

我必须在将资产编译到 application.rb 文件的路径中添加前导斜杠

config.assets.prefix = "jackapp"

至:

config.assets.prefix = "/jackapp"

噢.. RAILS.