【问题标题】:stylesheet_link_tag returns <base href="/"> instead of <link>stylesheet_link_tag 返回 <base href="/"> 而不是 <link>
【发布时间】:2015-12-17 09:13:36
【问题描述】:

整个应用程序的 Bundler 更新导致了一个非常具体的问题,即从 &lt;%= stylesheet_link_tag 'application', media: 'all'%&gt; 返回 &lt;link&gt;

不再返回通常的 &lt;link rel="stylesheet" href="assets/application.css"&gt; ,而是返回 &lt;base href="/"&gt;

如果我编辑 HTML 以手动添加 &lt;link&gt;,则 css 会正确显示,这表明没有编译器问题。此外,一些解决了类似问题的答案不适用于此特定问题,包括(但不限于)以下解决方案:

# Enable the asset pipeline
config.assets.enabled = true

# Fallback to assets pipeline if a precompiled asset is missed.
config.assets.compile = true

# Serve Static Assets. 
config.serve_static_files = true

此外,使用 rake tmp:cache:clearrake assets:clean 切换 ENV 和清除缓存对问题没有任何影响...

为了让事情变得更奇怪,ember 样式表和脚本按预期工作:

<%= include_ember_stylesheet_tags :frontend %>
<%= include_ember_script_tags :frontend %>

<link rel="stylesheet" href="assets/frontend.css">
<script src="assets/frontend.js"></script>

问题可能与以下宝石之一有关:

  1. 导轨 (4.2.5)
  2. 链轮 (3.5.2)

您可以在 Github 上查看完整的 Gemfile.lock 或完整的 Source Code

另一个可能的根本原因是一个新的路由配置,其中 mount_ember_app :frontend, to: "/" 与缺少 &lt;link&gt; 被返回和 &lt;base href="/"&gt; 被返回而不是因为两者都映射到“/”有关。但是,我肯定是错的......

这是我能够收集的所有信息,因为我在日志中看不到任何有用的信息,包括浏览器的输出。

【问题讨论】:

    标签: ember-cli-rails


    【解决方案1】:

    这个问题在几次升级后出现,尤其是在创建 mount_ember_app 之后。修复它的方法是具有与以下类似的结构:

    Ember-Cli-Rails 初始化程序

    EmberCLI.configure do |config|
      config.app :frontend, build_timeout: 30
    end
    

    Routes.rb

    mount_ember_app :frontend, to: "/", controller: "application"
    

    App/views/application/index.html.erb

    <%= render_ember_app :frontend do |head| %>
      <% head.append do %>
    
        <%# Rails Asset Pipeline%>
    
        <%= stylesheet_link_tag 'application', media: 'all'%>
        <%= javascript_include_tag 'application' %>
    
        <%# Ember-cli-rails Pipeline - Frontend Stylesheet is not used.%>
    
        <%= include_ember_script_tags :frontend %>
        <% include_ember_stylesheet_tags :frontend %>
    
        <%# META Stuff %>
    
        <%= csrf_meta_tag %>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
      <% end %>
    <% end %>
    

    前端/App/index.html

    <!DOCTYPE html>
    <html>
      <head>
         <title>Frontend</title>
         {{content-for 'head'}}
         {{content-for 'head-footer'}}
      </head>
      <body>
         {{content-for 'body'}}
         {{content-for 'body-footer'}}
         <%= render partial: "layouts/shared/analytics" %>
      </body>
    </html>
    

    这将解决大部分资产问题,如果不是全部的话。 &lt;base href="/"&gt; 显然是正常的,因为我现在相信它只是指前端的挂载点。

    在大多数 SCSS 恢复生机后,我也遇到了 @mixins 问题,但后来我发现它们与一个完全不同的问题相关联,因此不会在此答案中讨论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      相关资源
      最近更新 更多