我花了最后一天尝试不同的事情并在网上搜索答案,但我只是陷入困境。
我有一个rails app(4.0)可以记录在健身房制作的PB用于不同的升降机。
我想显示最高权重1代表,3代表和5代表。
我的控制器看起来像这样。
@history = current_user.workouts.order("weight DESC","reps DESC").group_by(&:lift)
我视图中的代码如下......
<% @history.each do | lift, workout | %>
<% name = lift[lift].downcase.gsub(/[ &]/,'') %>
<tr>
<td><%= link_to lift[lift], send("workouts_lift_#{name}_path") %></td>
<td><%= workout.where(:reps => 1).max_by(&:weight).weight %> kg</td>
<td><%= workout.where(:reps => 3).max_by(&:weight).weight %> kg</td>
<td><%= workout.where(:reps => 5).max_by(&:weight).weight %> kg</td>
</tr>
<% end %>
我一直在为where方法收到错误。我不清楚问题是什么,因为我可以使用
在rails控制台中使用它user.workouts.where(:reps=> 1).where(:lift => "Snatch")
答案 0 :(得分:2)
在您看来,workout
块中产生的each
变量是Workout
类的实例,而不是类本身。 ActiveRecord查询方法(如where
)仅适用于类或关系,因此会出错。在不了解模型和关系的基础架构的情况下,很难准确地说出您可以做些什么来修复它。