【发布时间】:2017-08-14 13:02:04
【问题描述】:
所以我将 pages.scss 扩展名更改为 pages.scss.erb 但如果我尝试(顺便说一句,我使用设计):
<% if current_user.admin == true%>
body { background-color: white}
<% else %>
body { background-color: black}
<% end %>
它给了我一个错误: 显示第 5 行引发的 /app/views/layouts/application.html.erb : #
的未定义局部变量或方法current_user
但是如果我尝试使用 User.current 而不是 current_user 它不会给我一个错误但代码不起作用....我尝试使用(我在 a 的值之间循环):
<% a = true %>
<% if a == true%>
body { background-color: white}
<% else %>
body { background-color: black}
<% end %>
成功了
【问题讨论】:
-
您的
current_user方法在哪里定义?在助手、控制器或其他地方? -
current_user不应在模型中定义。不管它是如何定义的,它应该是控制器的关注点。我认为您需要回顾一下您是如何处理身份验证的。 -
@TomLord 好的,那么我如何在应用程序控制器中定义它
-
@TomLord 哦,对不起,我忘了我正在使用设计
-
提供动态样式表通常是个坏主意,因为 Rails 喜欢预编译它的资产。将
admin类添加到body标签(取决于当前用户的角色)并为body { ... }和body.admin { ... }设置不同的背景颜色会容易得多
标签: css ruby-on-rails ruby