ActionView :: Template :: Error (960.css не скомпилирован) - PullRequest
22 голосов
/ 28 сентября 2011

У меня есть iframe, который визуализирует частичное и не является частью основного макета приложения или конвейера ресурсов.

Я хотел бы включить несколько таблиц стилей, однако я получаю эту ошибку:

 ActionView::Template::Error (960sm.css isn't precompiled):

Рельсы 3.1 Heroku

Ответы [ 3 ]

41 голосов
/ 29 сентября 2011

Таблицы стилей, которые не включены в манифест (напрямую по имени или косвенно через require_tree), предварительно не скомпилированы, поэтому не будут доступны в производстве.

Вам необходимо добавить лист в список элементов впрекомпилируйте в среде application.rb.

config.assets.precompile += ['960sm.css']

и затем получите доступ к нему в представлении:

stylesheet_link_tag('960sm')
4 голосов
/ 03 апреля 2012

Вместо того, чтобы управлять списком файлов CSS, вы можете просто настроить расширение, добавив .scss к имени файла.

Следовательно, 960см.css станет 960см.css.scss .

Это ничего не должно нарушать, так как действительный CSS является действительным SCSS.

0 голосов
/ 10 сентября 2014

Если у вас много автономных ресурсов, то вместо добавления каждого из них в список, например

config.assets.precompile += ['960sm.css']

, вы можете просто предварительно скомпилировать все , например так:

def precompile?(path)
  %w(app lib vendor).each do |asset_root|
    assets_path = Rails.root.join(asset_root, 'assets').to_path
    return true if path.starts_with?(assets_path)
  end
  false
end

# Precompile all assets under app/assets (unless they start with _)
Rails.application.config.assets.precompile << proc do |name, path|
  starts_with_underscore = name.split('/').last.starts_with?('_')
  unless starts_with_underscore
    path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
    precompile?(path)
  end
end

(На основе кода в Руководстве по Rails .)

...