ruby-on-rails - 根据枚举更改类颜色

标签 ruby-on-rails ruby class enums

我有一个如下所示的锻炼模型:

class Workout < ApplicationRecord
  belongs_to :user

  validates :date, :kind, presence: true
  validates :template, inclusion: { in: [true, false] }

  enum kind: { other: 0, swim: 1, bike: 2, run: 3 }

  has_many :comments, as: :commentable
end

在我看来,我会像这样遍历所有锻炼:

td
  .row
    .col-md-6
      = day.to_formatted_s(:short)
    .col-md-6.text-right
      = link_to 'Add +', new_team_user_workout_path(date: day, athlete: @athlete)
  - unless @workouts[day].blank?
    - @workouts[day].each do |workout|
      = link_to team_user_workout_path(@team, current_user, workout, athlete: params[:athlete]) do
        .workout
          .workout-kind.text-semibold
            = workout.kind.capitalize
          - unless workout.distance.blank?
            .workout-spec.text-light
              | Distance:
              | &nbsp;
              = workout.distance/1000
              | &nbsp;km
          - unless workout.duration.blank?
            .workout-spec.text-light
              | Duration:
              | &nbsp;
              = workout.duration/60
              | &nbsp;mins

如果枚举是“游泳”,我想像这样向 Workout 添加一个类:Workout.swim。如果枚举是“自行车”,则应附加 Workout.bike 类,以便我可以更改背景颜色。

在 Rails 中执行此操作的最佳做​​法是什么?

谢谢。

最佳答案

您可以使用“疑问”方式检查枚举 object.enum?,因此您可以:

.workout{ class: ('swim' if workout.swim?) }

如果锻炼不是游泳,则不会打印任何内容。

如果您为每个可能的枚举定义了一个类,那么您还可以:

.workout{ class: workout.kind }

如果类 swim 已被定义并且它采用与枚举相同的名称,这将起作用。

关于ruby-on-rails - 根据枚举更改类颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48744640/

相关文章:

ruby-on-rails - 提交按钮的 CSS Sprite 不起作用(在 Rails 3 中)

ruby-on-rails - has_many通过关联sql报错

ruby-on-rails - 安装 mysql2 gem 时出错

ruby - 我在哪里可以找到一个很好的 ruby​​ 语法检查器以在 Emacs 中使用

ruby-on-rails - 从数组中提取多个键值属性

ios - 在 Swift 中使用字符串将类分配给变量

ruby-on-rails - Ruby on Rails - 关联、模型和收藏夹

ruby - 是否有类似 Perl 的 LWP for Ruby 的模块?

java - 如何重新部署在tomcat上运行的一类webapp?

javascript - 在 React 类之间传递数据不起作用