在Ruby on Rails中向集合添加新项后,如何重新编译application.css.scss.erb资产?

在Ruby on Rails中向集合添加新项后,如何重新编译application.css.scss.erb资产?,css,ruby-on-rails,Css,Ruby On Rails,我正在开发一个rails应用程序,它允许管理员用户动态地向集合添加颜色,然后通过对颜色和css类的引用将这些颜色应用于帖子 在我的application.css.scss.erb文件中,我有以下代码: <% Color.all.each do |color| %> .theme-<%= color.name %>{ color: <%= color.text_color %>; background: <%= co

我正在开发一个rails应用程序,它允许管理员用户动态地向集合添加颜色,然后通过对颜色和css类的引用将这些颜色应用于帖子

在我的application.css.scss.erb文件中,我有以下代码:

<% Color.all.each do |color| %>
    .theme-<%= color.name %>{
        color: <%= color.text_color %>;
        background: <%= color.hex_code %>;
        border-top-color: <%= color.hex_code %>;
    }
<% end %>

.主题-{
颜色:;
背景:;
边框顶部颜色:;
}
如您所见,我正在浏览颜色集合中的所有颜色,并为每个颜色创建一个特定的css类,以便在我的文章视图中应用

每个帖子都引用了颜色集合中的一种颜色,因此在我的帖子视图中,我应用了如下类:

<div id="post-header" class="theme-<%= @post.color.name %>">
    <h1><%= @post.title %></h1>
    <%= link_to image_tag('post_header_image.png'), post_path(@post) %>
</div>

我希望管理员用户可以通过表单向颜色集合动态添加新颜色,然后自动编译application.css.scss.erb文件,以便可以立即应用任何新颜色类,而无需手动刷新或更新application.css.scss.erb文件

问题是,当我向颜色集合动态添加新颜色时,我的application.css.scss.erb文件不会重新编译,因此不会创建新的颜色类,因此实际的颜色样式不会显示在我的后期视图中

在向颜色集合添加新颜色后,有没有办法强制rails重新编译我的application.css.scss.erb文件


否则,是否有更好的方法来处理Rails中的动态样式和类?

这只是一个简单的解决方案,如果您只想更改此div的颜色,请使用样式标记

<div id="post-header" style="<%= @post.color.name.present? ? "color: #{@post.color.name};" : "" %>">
  ...
</div>

...

如果您不使用标准颜色,您可以将十六进制代码作为另一列存储在数据库中,然后在颜色变量之前有一个额外的#。

谢谢您的回答。我正在寻找一个涉及可重用类的更有效的解决方案。这样我就不必在一个页面中包含很多内联样式。将有一些页面(例如,包含所有帖子的页面)必须使用许多不同的颜色,因此使用内联样式太多了。