我有一个如下所示的锻炼模型:
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:
|
= workout.distance/1000
| km
- unless workout.duration.blank?
.workout-spec.text-light
| Duration:
|
= workout.duration/60
| 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/