为什么我的删除帖子功能不起作用?

时间:2017-11-20 18:02:41

标签: html ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我试图使用Rails创建一个简单的博客应用程序。我添加了一个功能,如“创建一个新帖子”,“编辑一个帖子”我还想添加一个删除功能。但它不起作用。请帮帮我!

这是我的“posts_controller.rb”文件

class PostsController < ApplicationController
  def index
    @posts = Post.all.order('created_at DESC')
  end

  def new
    @post = Post.new 
  end

  def create
    @post = Post.new(post_params)
    @post.save

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

  def show 
    @post = Post.find(params[:id])
  end

  def edit 
    @post = Post.find(params[:id])
  end 

  def update
    @post = Post.find(params[:id])

    if @post.update(params[:post].permit(:title, :body))
      redirect_to @post
    else 
      render 'edit'
    end
  end

  def destroy
    @post = Post.find(params[:id])
    @post.destroy

    redirect_to post_path
  end

  private 
    def post_params 
     params.require(:post).permit(:title, :body)
    end
  end

“show_html.erb”文件:

<div id="post_content">
  <h1 class="title">
    <%= @post.title %>
  </h1>

  <p class="date">
    Submitted <%= time_ago_in_words(@post.created_at) %> Ago
      | <%= link_to 'Edit', edit_post_path(@post) %>
      | <%= link_to 'Delete', post_path(@post), method: :delete,
                    data: { confirm: 'Are you sure?' } %>
  </p>

  <p class="body">
    <%= @post.body %>
  </p>
</div>

它给了我这个错误: PostsController#show中的ActiveRecord :: RecordNotFound 找不到'id'= 7的帖子 提取的来源(第22行):

def show 
  @post = Post.find(params[:id])
end

1 个答案:

答案 0 :(得分:1)

destroy方法中,您重定向到刚刚删除的show的{​​{1}}路线。这就是您收到post错误的原因。

RecordNotFound方法中将redirect_to post_path更改为redirect_to posts_path,看看是否能解决此错误。