代码之家  ›  专栏  ›  技术社区  ›  Jack

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

  •  0
  • Jack  · 技术社区  · 10 年前

    我正在升级 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?主体=1
    

    知道吗?为什么Rails4将“样式表”附加到该路径?

    我没有改变 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 回复  |  直到 10 年前
        1
  •  1
  •   Jack    10 年前

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

    config.assets.prefix = "jackapp"
    

    至:

    config.assets.prefix = "/jackapp"
    

    哦。。轨道。