stylesheet_link_tag возвращает <base href = "/"> вместо <link>

Обновление пакета для всего приложения вызвало очень специфическую проблему с <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

Кроме того, переключение ENV и очистка кэша с помощью rake tmp:cache:clear и rake assets:clean не оказали никакого влияния на проблему...

Чтобы сделать вещи более странными, таблица стилей и скрипт 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)

Вы можете просмотреть полный Gemfile.lock или весь исходный код на Github.

Другая возможная причина - новая конфигурация маршрута, где mount_ember_app :frontend, to: "/" относится к отсутствию <link> возвращается и <base href="/"> вместо этого, поскольку оба сопоставляются с "/". Тем не менее, я, безусловно, могу ошибаться в этом...

Это вся информация, которую мне удалось собрать, так как я не мог видеть никакой полезной информации в журналах, включая выходные данные браузера.

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 / просмотров / приложение /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="/"> по-видимому, это нормально, так как я теперь считаю, что это просто относится к точке монтирования Frontend.

У меня также были проблемы с @mixins после того, как большинство SCSS вернулось к жизни, но позже я узнал, что они связаны с совершенно другой проблемой, и поэтому не будут обсуждаться в этом ответе.

Другие вопросы по тегам