Rails正确删除数据库项但仍然引发错误

时间:2014-04-24 17:09:32

标签: ruby-on-rails ruby database

我在Rails应用中遇到了数据库问题。 问题是当我在上传的图像上按下删除时它会在浏览器中引发错误,如下所示。 令我困惑的是: A)当我使用Rails控制台检查项目时,它显示该项目已被删除。 B)错误是指从未存在的项目,即id=3当只有两个项目存在时。

错误

ActiveRecord::RecordNotFound in PostsController#destroy
Couldn't find Post with id=4
Extracted source (around line #24):

def destroy
 @post = Post.find params[:id]
 @post.destroy
 redirect_to 'posts/'
end

帖子控制器

class PostsController < ApplicationController


def index
 @posts = Post.all
end

def new
  authenticate_user!
  @post = Post.new
end

def create
  @post = Post.new(post_params)

  if @post.save
    redirect_to '/posts'
  else
    render 'new'
  end
end

def destroy
  @post = Post.find params[:id]
  @post.destroy
  redirect_to 'posts/'
end

private

def post_params
  params.require(:post).permit(:description, :picture)
end

end

发布模型

 class Post < ActiveRecord::Base
  has_attached_file :picture, styles: { medium: "300x300>", thumb: "100x100>" }

  validates :description, presence: true
  validates_attachment_content_type :picture, content_type: ["image/jpg", "image/jpeg",     "image/png"]

  has_many :comments
end

创建帖子迁移

 class CreatePosts < ActiveRecord::Migration
   def change
   create_table :posts do |t|
   t.text :description

  t.timestamps
    end
  end
end

不确定到底出了什么问题,但它似乎引发了一个方法的错误,这个方法对于所有意图和目的都很好,而且数据库中的id赋值似乎也出现了问题。

1 个答案:

答案 0 :(得分:0)

试试这个: -

帖子控制器

def destroy
 @post = Post.find params[:id]
 @post.destroy
 redirect_to '/posts'
end

如果以上不起作用,请尝试以下

def destroy
 @post = Post.find params[:id]
 @post.destroy
 redirect_to posts_path
end