我创建了一个小型运动应用程序,现在我只在索引页面上显示当前用户锻炼时遇到问题。
问题: WorkoutsController #index中的NoMethodError。未定义的方法`锻炼'为零:NilClass。
def index
@workouts = current_user.workouts.all
end
我在下面留下所有详细信息:
协会
在我的用户模型中,我有
has_many:锻炼
在我的Workout模型中,我写了
belongs_to:user
在我的views / workouts / index.html.erb
中<% @workouts.each do |workout| %>
<h4><%= link_to workout.date, workout %></h4>
<h3><%= workout.workout %></h3>
<% end %>
答案 0 :(得分:0)
如果要获取current_user的训练列表,则应定义current_user。这意味着您需要登录。您可以在过滤器之前轻松检查
before_filter :authenticate_user!
并在您使用代码后
@workouts = current_user.workouts.all
如果您想显示其他用户的锻炼,可以跳过过滤器以获取新操作
class TestController < ApplicationController
before_filter :authenticate_user!, except: [:another_index]
def another_index
@workouts = User.find(params[:id]).workouts.all
end
end
答案 1 :(得分:-1)
试试这个:
def index
@workouts = current_user.present? ? current_user.workouts : []
end
我认为当你没有被提及时会出现错误,并且current_user
返回nil