【问题标题】:how to change text color in rails views如何更改rails视图中的文本颜色
【发布时间】:2018-10-15 13:37:40
【问题描述】:

如果状态为“待处理”,则以蓝色显示“待处理”。如果状态为“已接受”,则以绿色显示“已接受”。如果状态为“拒绝”,则显示红色..

<% @applyleaves.each do |f| %>
<%= if f.status == 0
                 "Pending" 
       elsif f.status == 1
                 "Accepted"
       elsif f.status == 2
                 "Rejected"
       else
                 "Pending"
       end%>
</td>

【问题讨论】:

  • 好的,我把枚举状态放在哪里:{ 待定:0,接受:1,拒绝:2 }
  • 在您的模型中。在提供的答案下方添加您想要做的任何评论。
  • 你的erb tags没有正常关闭,
  • 有问题的是,您要求枚举状态具有字符串但在代码中包含数字。

标签: ruby ruby-on-rails-4 ruby-on-rails-5


【解决方案1】:

如果你的状态列(属性)是一个整数,你可以使用一个枚举,这样你就只有 3 个有效值:

# model
enum status: { pending: 0, accepted: 1, rejected: 2 }

每个键都赋予它们一个可读的值。因此,在您看来,您可以创建任何 html 标记,以便分配您之前使用所需颜色文本定义的类:

<span class="<%= "#{f.status.downcase}_status" %>">
  <%= f.status.capitalize %>
</span>

CSS 不止于此:

<style>
  .pending_status {
   color: blue;
  }
  .accepted_status {
   color: green;
  }
  .rejected_status {
   color: red;
  }
</style>

【讨论】:

  • 如果enumstatus持有hash,如何直接调用f.status.capitalize
  • 我的朋友,如果f 是一个(名称不佳的)AR 对象,它的枚举状态可以通过它的名称访问。不管属性是否被 Rails 表示为 Hash。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多