“未定义的方法,其中”查询中的错误

时间:2013-08-18 13:08:55

标签: ruby-on-rails ruby arrays

我花了最后一天尝试不同的事情并在网上搜索答案,但我只是陷入困境。

我有一个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")

1 个答案:

答案 0 :(得分:2)

在您看来,workout块中产生的each变量是Workout类的实例,而不是类本身。 ActiveRecord查询方法(如where)仅适用于类或关系,因此会出错。在不了解模型和关系的基础架构的情况下,很难准确地说出您可以做些什么来修复它。