Как написать код ruby ​​в css файле - PullRequest
3 голосов
/ 21 июля 2010

У меня есть приложение rails, в котором мне нужен файл css таким образом, чтобы его свойство можно было изменить с помощью кода ruby. ех. background_color: <% = код ruby, который возвращает цвет фона%>

Таким образом, пользователь может установить его свойство css и будет применим только к этому пользователю, как тема.

Спасибо!

Ответы [ 5 ]

3 голосов
/ 22 апреля 2014

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

Намного проще добавить класс .active .inactive к своим элементам (телу). Или выведите inline css в своей голове для таких вещей, как пользовательские цвета и т. Д., В зависимости от пользователей, вошедших в систему.

Что ты пытаешься сделать? Это звучит как что-то, что вы бы сделали, чтобы проверить, находитесь ли вы в производстве или разработке? В этом случае вы можете сделать что-то вроде:

<body class='<%= "development" if Rails.env == 'development' %>'>

или даже

<body <%= "style='background-color: red;'" if Rails.env == 'development' %>

Вам никогда не нужно использовать ruby ​​в своих CSS и JavaScript, если вы обнаружите, что делаете это, вы, вероятно, подходите к нему неправильно. По крайней мере, это то, что я нашел после многих попыток сделать это красиво.

Вы можете сделать это в своей голове:

<style>
    .user .name{
       color: <%= current_user.chosen_color %>;
    }
</style>

p.s. атрибуты данных - очень эффективный способ передачи переменных и т. д. в javascript

p.s.2. это адаптация моего ответа здесь: Создание переменной scss в config.rb для файлов scss Я думаю, что это актуально для всех, кто сюда приходит, поэтому я тоже ответил здесь.

2 голосов
/ 21 июля 2010

Также взгляните на http://lesscss.org/

1 голос
/ 21 июля 2010

Если вам просто нужно что-то простое , то вы можете сделать это в вашем макете:

<head>
....
<% unless current_user.theme.nil? %>
<style>
body{
  background:<%= current_user.theme.background_color%>;
}
</style>
</head>
<% end %>

Если вы начинаете новый проект, SASS - это то, что нужно, и, вероятно, это то, что вам нужно, если у вас есть достаточно времени. Если только пара записей, это может быть неплохо сделать в HTML.

Примечание: я чувствую себя немного грязно по этому поводу, но это сработает.

0 голосов
/ 21 июля 2010

Посмотрите этот скринкаст, в котором объясняется, как настроить динамические CSS-файлы с помощью ERB (системы шаблонов Rails) http://nubyonrails.com/system/images/css-erb-small.mov

0 голосов
/ 21 июля 2010

Ознакомьтесь с этим руководством по использованию механизма SASS для динамического изменения CSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...