设计:我不能只显示当前的用户锻炼

时间:2016-09-01 09:22:42

标签: ruby-on-rails ruby activerecord devise

我创建了一个小型运动应用程序,现在我只在索引页面上显示当前用户锻炼时遇到问题。

问题: WorkoutsController #index中的NoMethodError。未定义的方法`锻炼'为零:NilClass。

def index
    @workouts = current_user.workouts.all
end

我在下面留下所有详细信息:

协会

  1. 在我的用户模型中,我有

    has_many:锻炼

  2. 在我的Workout模型中,我写了

    belongs_to:user

  3. 在我的views / workouts / index.html.erb

    <% @workouts.each do |workout| %>
        <h4><%= link_to workout.date, workout %></h4>
        <h3><%= workout.workout %></h3>
    <% end %>
    

2 个答案:

答案 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

相关问题