这似乎是一个非常基本的问题,但我没有在互联网上的任何地方找到解释如何做到这一点,我想很多人都有这个问题。
我有三个模型:运动,锻炼和exercise_exercise(连接表)
在我的联接表中,我有额外的列与每个练习相关联,例如要执行的集合和重复次数。所以我的workout_exercises
表看起来像这样:
t.integer "workout_id"
t.integer "exercise_id"
t.integer "repetitions"
t.integer "set"
t.integer "rest"
我可以为锻炼添加锻炼,在我的锻炼展示视图中,我有一个与每个锻炼相关的锻炼列表。
我无法弄清楚如何在锻炼节目视图中显示每个锻炼的集合,重复和休息。
以下是我的模型代码:
class Exercise < ActiveRecord::Base
attr_accessible :name, :description, :photo, :video
has_many :workout_exercises
has_many :workouts, :through => :workout_exercises
end
class Workout < ActiveRecord::Base
attr_accessible :name
has_many :workout_exercises
has_many :exercises, :through => :workout_exercises
end
class WorkoutExercise < ActiveRecord::Base
attr_accessible :exercise_id, :repetitions, :rest, :set, :workout_id
belongs_to :exercise
belongs_to :workout
end
在我的workouts_controller中我有
class WorkoutsController < ApplicationController
before_filter :get_workouts, :only => [:show, :edit, :update, :destroy]
before_filter :get_exercises, :only => [:show]
def get_exercises
@workout_exercise = @workout.exercises
end
def get_workouts
@workout = Workout.find(params[:id])
end
最后,我在锻炼秀视图中有这个表格:
<% @workout_exercise.each do |exercise| %>
<%= exercise.name %>
<% end %>
感谢您的帮助!
答案 0 :(得分:3)
您要查找的字段位于workout_exercises
表中。
在workouts_controller
:
def get_exercises
@workout_exercise = @workout.workout_exercises
end
在您的视图中,您可以列出以下信息 - 练习的名称仍位于exercise
,但每个workout_exercise
都引用了exercise
<% @workout_exercise.each do |w| %>
Name: <%= w.exercise.name %>
Set: <%= w.set %>
Reps: <%= w.repetitions %>
Rest: <%= w.rest %>
<% end %>
@workout_exercise
中实例化show
:def show
@workout = Workout.find(params[:id])
@workout_exercise = @workout.workout_exercises
end
github for explainz
答案 1 :(得分:0)
我让this Gist准确地说明了如何做到这一点。一步一步。