Можно ли изменить application.css на application.css.sass? - PullRequest
6 голосов
/ 12 октября 2011

Я бы хотел изменить свой файл application.css на файл sass и использовать @import для извлечения всех необходимых файлов. Затем я хочу импортировать application.css.sass в файлы sass для конкретных страниц. Все это прекрасно работает в разработке, но когда я запускаю его в рабочей среде на heroku, я получаю эту ошибку:

Error compiling CSS asset
Sass::SyntaxError:  File to import not found or unreadable: application

application.css.sass:

@import "reset"
@import "typography"
@import "buttons"
@import "junk"

$yellow: #f0f090
$orange: #f89818
$blue1: #184898
$blue2: #4888c8

body
 background: ...
 ...
 /* all the rest of the app-wide styling */

uniquePage.css.sass:

@import "application"
/*page specific styling*/

Тогда на страницах, которые нуждаются в материалах, отличных от application.css, я звоню

!!! 5
%html
  %header       
    = stylesheet_link_tag "uniquePage"

Ответы [ 3 ]

5 голосов
/ 13 октября 2011

Вы должны изменить его на application.scss:)

, пожалуйста, проверьте эти два RailsCasts:

http://railscasts.com/episodes/279-understanding-the-asset-pipeline

http://railscasts.com/episodes/282-upgrading-to-rails-3-1

+1 по предложениям Симоны

5 голосов
/ 13 октября 2011

В Rails 3.1 application.css предназначен для использования в качестве файла манифеста. Вы не должны переименовывать его, а также не должны помещать в него содержимое, за исключением директив require или include.

Используйте другое имя файла для вашей цели.

Также обратите внимание, что синтаксис SCSS @import похож на использование частичного. Если вы хотите @import application импортируемый файл должен называться _application, а не application.

3 голосов
/ 13 октября 2011

Тогда я думаю, что возникает вопрос, как мне сделать разные файлы манифеста для разных наборов CSS?

Есть несколько способов сделать это:

1.На листах страниц

Это то, что вы делаете сейчас, но я бы организовал листы немного по-другому, используя @imports как в приложении, так и на уникальной странице.(Вместо импорта приложения на уникальную страницу).

2.Используйте второй лист только для этих страниц

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

3.Реорганизовать свой CSS

Если дополнительный CSS не является существенным, вам, возможно, будет лучше выполнить рефакторинг, чтобы включить код в основной файл.Легко добавить дополнительный класс в тег body уникальной страницы и настроить любой CSS для использования этой страницей.

Вы все еще можете поместить этот CSS в файл для уникальной страницы (чтобы помочь с обслуживанием) и @import его в свой основной файл.

Как правило, если только CSS не изменяетсяявляются существенными, я бы попытался объединить их в основной CSS, в противном случае перейдите к варианту 1.

...