在将Rails 3.2.17升级到Rails 4.0.0时,application.css改变了路径

时间:2015-03-11 17:10:19

标签: ruby-on-rails-4 ruby-on-rails-3.2

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

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

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

如果我删除'样式表'我在下面看到了样式表:

/jackapp/application.css?body=1

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

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

但是js位于:

/jackapp/application.css?body=1

有什么想法吗?为什么Rails 4附加了样式表'走那条路?

我没有更改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>

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

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

我没有任何失败的测试。

如何告诉应用将资源加载到正确的路径? 感谢。

杰克

1 个答案:

答案 0 :(得分:1)

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

config.assets.prefix = "jackapp"

为:

config.assets.prefix = "/jackapp"

OOH .. RAILS。