我有主题模型,我有3场
1)导航栏 2)标题 3)包含
我想从custom.css.erb访问实例变量(@theme),以便我如何访问params。
Controller.rb
def show
@params = params[:name].downcase
@cmp = Company.find_by(name: @params)
@theme = Theme.find_by(company_id: @cmp.id)
end
custom.css.erb
<% if @theme.present? %>
.navbar.navbar-inverse {
background-color: <%= @theme.navbar %> !important;
}
.page-header {
background-color: <%= @theme.header %> !important;
}
.panel.panel-flat {
background-color: <%= @theme.contain %> !important;
}
.panel-heading {
background-color: <%= @theme.contain %> !important;
}
<% else %>
.navbar.navbar-inverse {
background-color: #37474F !important;
}
.page-header {
background-color: #ffffff !important;
}
.panel.panel-flat {
background-color: #ffffff !important;
}
.panel-heading {
background-color: #ffffff !important;
}
我得到了像下面的错误。
答案 0 :(得分:1)
使用实例变量的动态css样式不应放在css.erb / css.haml中,因为它无法正常工作。 考虑资产预编译。 Rails将在启动应用程序之前预编译资产,之后它将是静态资源。所以,你的动态不能在这里实现
将这些动态css样式放在布局
中<强> /layout/home.html.haml 强>
:css
.div {
color: <%=@mycolor%>;
...
}
/layout/home.html.erb (如果您有erb模板)
<style type="text/css">
.div {
color: <%=@mycolor%>;
...
}
</style>