Возможно ли использовать stylesheet.css.erb в Rails? - PullRequest
5 голосов
/ 27 августа 2009

Привет, я новичок в Rails и Ruby в целом. Мне было интересно, возможно ли использовать встроенный файл ruby ​​css (css.erb), аналогично использованию файлов html.erb для представлений.

Например, я использую

<%= stylesheet_link_tag "main" %>

для ссылки на мой файл main.css в public / stylesheets, но когда я изменяю расширение файла с main.css на main.css.erb, он больше не отображает css ..

Это вообще возможно, или есть лучший способ?

Ответы [ 3 ]

24 голосов
/ 09 апреля 2012

К тому времени, когда на этот вопрос был дан ответ, действительно не было возможности правильно использовать .css.erb файлы в рельсах.

Но новый конвейер ресурсов rails 3.1 позволяет вам использовать помощники ресурсов в вашем файле css. Синтаксические анализаторы css не связаны контроллером / областью действия, но анализатор ruby ​​теперь может решить некоторые проблемы, такие как ссылки на пути к изображениям

.class { background-image: url(<%= asset_path 'image.png' %>) }

или вставьте изображение прямо в ваш CSS

#logo { background: url(<%= asset_data_uri 'logo.png' %>) }

источник: http://guides.rubyonrails.org/asset_pipeline.html

4 голосов
/ 27 августа 2009

Вы также можете создать контроллер "таблиц стилей"

./script/generate controller stylesheets main admin maintenance

Вы получаете что-то вроде этого:

      exists  app/controllers/
      exists  app/helpers/
      create  app/views/stylesheets
      exists  test/functional/
      exists  test/unit/helpers/
      create  app/controllers/stylesheets_controller.rb
      create  test/functional/stylesheets_controller_test.rb
      create  app/helpers/stylesheets_helper.rb
      create  test/unit/helpers/stylesheets_helper_test.rb
      create  app/views/stylesheets/main.html.erb
      create  app/views/stylesheets/admin.html.erb
      create  app/views/stylesheets/maintenance.html.erb

И позже вы можете использовать приложение / views / stylesheets / files как динамически отображаемые CSS-файлы.

Тот же метод работает для файлов javascript (контроллер javascripts)

3 голосов
/ 27 августа 2009

Я так не думаю. Каково ваше намерение - использовать переменные и оценивать их во время выполнения или во время «компиляции» (что означает время развертывания?). Кроме того, что будет связывание ERB? Будет ли он привязан к контроллеру, как представления и помощники, чтобы экземпляр ERB имел доступ к переменным экземпляра, установленным в контроллере? Я просто представляю этот вопрос как теоретическое упражнение.

Если вы хотите использовать переменные в своем CSS, тогда вы можете использовать SASS Haml. Вы не получаете доступ к области видимости контроллера, но вы получаете базовые переменные и циклы. Плюс другие классные вещи, такие как миксин.

...