2014-07-21 3 views
4

Asset отфильтрован и не будет обслуживаться: добавить Rails.application.config.assets.precompile += %w(home.css) к config/initializers/assets.rb и перезапустить серверрельсов 4 актива трубопровода assets.rb рефакторинг выпуск

Я пытаюсь настроить несколько макетов, которые поражают разные. css.scss и .js, один для домашней страницы и другие для различных разделов приложения.

Мой дом макет выглядит следующим образом:

doctype html 
= render 'layouts/components/view_source_msg' 
html 
    head 
    title 
     = browser_title(yield(:title)) 
    = render 'layouts/components/meta' 
    = render 'layouts/components/favicons' 
    = stylesheet_link_tag 'home' 
    = csrf_meta_tags 

    body[class="#{build_body_class} loading"] 

    == yield 
    = render 'layouts/components/analytics' 
    = javascript_include_tag 'home' 

    javascript: 
     $(function(){ 
     $(document).foundation(); 
     view_#{controller.controller_name.downcase}.init(); 
     }); 

Состояния ошибки в настройке инициализатор assets.rb, которые у меня есть установки, как:

Rails.application.config.assets.precompile += %w(*.css.sass) 
Rails.application.config.assets.precompile += %w(*.css.scss) 
Rails.application.config.assets.precompile += %w(*.js) 
Rails.application.config.assets.precompile += %w(*.js.coffee) 
Rails.application.config.assets.precompile += %w(*.js.coffee.erb) 

Но это не работает ... Может кто-нибудь назовите меня в правильном направлении? Спасибо

Update

я смог получить эту работу по ...

Rails.application.config.assets.precompile += %w(home.css) 
Rails.application.config.assets.precompile += %w(home.js) 

Но это кажется немного прочь. В моих старых приложениях рельсов другие методы работали бы просто отлично ...

+0

Я смущен вашим синтаксисом здесь. Я просто запустил рабочее приложение, добавил новый файл test.css и ссылался на него из макета, используя метод 'stylesheet_link_tag', а рельсы использовали его без проблем без исправления, которое вы сделали (я просто изменил весь текст на красный чтобы указать, что это сработало). Это глупый вопрос, но вы поместили файл 'home.css' в папку' app/assets/stylesheets', верно? –

+0

@RobW. да, я сделал, но это на самом деле файл home.css.scss. Не то, чтобы расширение sass было важно, но я больше обеспокоен тем, почему дикие карты не будут работать. Я знаю, что мне здесь что-то не хватает. –

ответ

1

С Rails v4 теперь драгоценный камень звездочек обрабатывает конвейер активов. Он ищет файлы стилей внутри файлов app/assets/stylesheets и vendor/assets/stylesheets, поэтому, если вы помещаете home.css в public/assets/stylesheets или что-то в этом роде, там не будет. Если вы специально укажете рельсы, чтобы прекомпилировать любые активы, соответствующие этому имени, как это было в вашем исправлении, он сделает это, а затем выдает скомпилированную таблицу стилей и знает, чтобы ссылаться на нее, поэтому именно поэтому она работает. Однако это не предпочтительное соглашение. Ruby API for Coding Links to Assets

+0

И убедитесь, что ваш файл 'application.css' имеет следующие строки: ' * = require_self' '* = require_tree .' –

+0

Файл находится в каталоге app/assets/stylesheets, и я убедился, что * = require_self и Мне все еще нужно использовать Rails.application.config.assets.precompile + =% w (home.css) в инициализаторе. Требуется ли * = require_tree, если требуется только файл верхнего уровня? –

+0

Хмм, это действительно оставляет меня почесывать голову. Какая версия Rails? И да, даже файлы верхнего уровня нуждаются в том, что по мере того, как трубопровод sprockets просматривает application.css и application.js, чтобы определить, какие активы ему необходимо выполнить. [Ruby API для файлов манифеста и директив] (http://guides.rubyonrails.org/asset_pipeline.html#manifest-files-and-directives) –

Смежные вопросы