1

我花了最后一天尝试不同的东西并在互联网上搜索答案,但我只是卡住了。

我有一个 Rails 应用程序(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")
4

1 回答 1

2

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

于 2013-08-18T13:16:11.247 回答