我有一个用户锻炼的集合。锻炼包含一系列练习。每个练习都有一个类别。
我想遍历锻炼的集合,并按锻炼类别对它们进行分组。
让我大吃一惊的是,exercise_workouts是一个连接模型。例如:
#<ExerciseWorkout id: 50, exercise_id: 14, workout_id: 42, description: nil, created_at: "2013-03-12 08:15:17", updated_at: "2013-03-12 08:15:17", user_id: nil>
.exercises
%h1.exercise-type-title Lifting Exercises
= render @workout.exercise_workouts我想通过练习呈现按可用类别分组的@workout.exercise_workouts部件。所以我会看到类似这样的东西
.exercises
%h1.exercise-type-title Lifting Exercises
= render @workout.exercise_workouts (lifting)
%h1.exercise-type-title Running Exercises
= render @workout.exercise_workouts (running)不知道该怎么做?而且也不希望硬编码每个类别,只列出通过智能迭代器可用的内容。
发布于 2013-03-12 16:28:42
你可以尝试下面的方法吗(我不确定我是否得到了部分正确的名称,它是基于exercise_workouts的类)
@workout.exercise_workouts.group_by(&:category).each do |category, exercises|
= render partial: '/exercise_workouts/exercise_workout', collection: exercises, locals: { category: category }更新:访问exercise上的类别
您可以将循环更改为如下所示
@workout.exercise_workouts.group_by { |ew| ew.exercise.category }.each do |category, exercises|
= render partial: '/exercise_workouts/exercise_workout', collection: exercises, locals: { category: category }或者,您可以委托类别属性在exercise_workout模型上执行
#exercise_workout.rb
delegate :category, to: :exercise并且仍然使用第一个版本。就我个人而言,我更喜欢第二种解决方案。
https://stackoverflow.com/questions/15356270
复制相似问题