nil的未定义方法`update’:NilClass rails 4.0.0

我是Ruby on Rails和堆栈溢出的初学者。 很抱歉,如果在提出这个问题时有错误或……

我正在尝试为我的博客项目编写编辑/更新。 这是我的控制器:

def edit @post = Post.find params[:id] end def update @post.update(params[:post].permit(:title, :summary, :content)) redirect_to posts_path end 

这是我的看法:

 

Edit Page

Title: Summary: Content:

当我想更新任何post时,我不断收到此错误:

PostsController#update中的NoMethodError

nil的未定义方法`update’:NilClass

任何帮助将不胜感激! 🙂

必须将@post实例变量设置为指向适当的Post对象才能对其执行更新:

 @post = Post.find params[:id] 

您也可以使用before_action设置before_action

 class PostsController < ApplicationController before_action :set_post, only: [:edit, :update] # GET /posts/1/edit def edit end # PATCH/PUT /posts/1 # PATCH/PUT /posts/1.json def update end private # Use callbacks to share common setup or constraints between actions. def set_post @post = Post.find(params[:id]) end end 

现在,每当rails遇到您的editupdate操作时,它都会将@post设置为“当前”post。