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遇到您的edit
或update
操作时,它都会将@post
设置为“当前”post。