我正在开发一个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_lists
,TodoLists
和todo_list
,但这些都不起作用。
我在各个网站搜索解决方案,但我找不到。我真的认为这里的主要问题是我不明白要编写什么代码因为我有不同的代码,具有与上述(@todo_lists
和其他)相同的含义。有点傻但是,还是试着&#39;这里
答案 0 :(得分:0)
问题是current_user
是零。
如果您使用devise
,请在before_action :authenticate_user!
中添加TodoListsController
。
如果没有,则将相似的代码添加到application_helper.rb
def current_user
User.first
end