未定义的方法`todo_lists'为零:NilClass

时间:2017-04-03 03:48:37

标签: ruby-on-rails

我正在开发一个todolist应用程序,应用程序只会根据用户ID显示用户的待办事项列表。这意味着如果用户登录,数据库将仅显示具有相同user_id的待办事项列表。

但我得到了这个错误:

undefined method `todo_lists' for nil:NilClass

  # GET /todo_lists/new
def new
@todo_list = current_user.todo_lists.build
end
  # GET /todo_lists/1/edit

todo_lists_controller.rb

class TodoListsController < ApplicationController
before_action :set_todo_list, only: [:show, :edit, :update, :destroy]

def index
@todo_lists = TodoList.all
end

def new
@todo_list = current_user.todo_lists.build
end

def create
@todo_list = current_user.todo_lists.build(todo_list_params)

respond_to do |format|
  if @todo_list.save
    format.html { redirect_to @todo_list, notice: 'Todo list was 
successfully created.' }
    format.json { render :show, status: :created, location: @todo_list }
  else
    format.html { render :new }
    format.json { render json: @todo_list.errors, status: :unprocessable_entity }
  end
 end
end

private
def set_todo_list
  @todo_list = TodoList.find(params[:id])
end

def todo_list_params
  params.require(:todo_list).permit(:title, :description)
 end
end

有其他方法,如破坏,更新,显示和编辑,但我不粘贴在这里因为我觉得它与这个问题无关。我尝试将todo_lists更改为其他内容,例如@todo_listsTodoListstodo_list,但这些都不起作用。

我在各个网站搜索解决方案,但我找不到。我真的认为这里的主要问题是我不明白要编写什么代码因为我有不同的代码,具有与上述(@todo_lists和其他)相同的含义。有点傻但是,还是试着&#39;这里

P / S 2个月的学习轨道^^&#39;我的英语破碎了

1 个答案:

答案 0 :(得分:0)

问题是current_user是零。

如果您使用devise,请在before_action :authenticate_user!中添加TodoListsController

如果没有,则将相似的代码添加到application_helper.rb

def current_user
   User.first
end