我在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赋值似乎也出现了问题。
答案 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