0

整个应用程序的 Bundler 更新导致了一个非常具体的问题,即<link><%= stylesheet_link_tag 'application', media: 'all'%>

而不是返回通常的<link rel="stylesheet" href="assets/application.css">,它现在返回<base href="/">

如果我编辑 HTML 以手动添加<link>,则 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: "/"与缺少<link>返回和<base href="/">返回有关,因为两者都映射到“/”。但是,我肯定是错的......

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

4

1 回答 1

0

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

Ember-Cli-Rails 初始化程序

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

路由.rb

mount_ember_app :frontend, to: "/", controller: "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 %>

前端/应用程序/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>

这将解决大多数(如果不是全部)资产问题。<base href="/">显然是正常的,因为我现在认为它只是指前端的安装点。

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

于 2016-01-27T06:01:47.617 回答