В Rails 3.1, вы можете иметь ваши таблицы стилей, предварительно обработаны Еврорадио.
Теперь предположим, что у вас есть динамический стиль, называемый dynamic.css.scss.erb
(.erb
в конце очень важен!) в app/assets/stylesheets
. Он будет обработан Еврорадио (а затем Sass), и как таковые могут содержать такие вещи, как
.some_container {
<% favorite_tags do |tag, color| %>
.tag.<%= tag %=> {
background-color: #<%= color %>;
}
<% end %>
}
Вы можете включить его, как и любой таблицы стилей.
Насколько динамичным оно должно быть?
Обратите внимание, что он будет обрабатываться только один раз, поэтому, если значения меняются, таблица стилей не будет.
Я не думаю, что есть супер эффективный способ сделать это полностью динамичным, но все же возможно генерировать CSS для всех запросов. С учетом этой оговорки, вот помощник для этого в Rails 3.1:
def style_tag(stylesheet)
asset = YourApplication::Application.assets[stylesheet]
clone = asset.class.new(asset.environment, asset.logical_path, asset.pathname, {})
content_tag("STYLE", clone.body.html_safe, type:"text/css")
end
Вот как его использовать:
Сначала скопируйте выше помощника в app/helpers/application_helper.rb
.
Вы можете включить его в вашей странице следующим образом:
<% content_for :head do %>
<%= style_tag "dynamic.css" %>
<% end %>
The rest of your page.
Убедитесь, что ваш макет использует содержание :head
. Например, ваш layout/application.html.erb
может выглядеть следующим образом:
...
<HEAD>
....
<%= yield :head %>
</HEAD>
...
Я нашел это благодаря this post.
Обратите внимание, что если у вас есть логика, зависящая от базы данных, в вашем меньшем файле, она не будет использоваться в Heroku. – Trip