ArticlesController#show中的ActiveRecord :: RecordNotFound - 找不到带有'id'= 13的文章

时间:2016-10-13 22:33:07

标签: ruby-on-rails ruby

所以我正在做Jumpstarts Blogger教程:

http://tutorials.jumpstartlab.com/projects/blogger.html#i1:-form-based-workflow

我试图通过在我的控制器中添加destroy方法来删除文章,但是在实际删除文章时似乎存在数据库问题。这些文章在我的本地服务器上运行时被删除了,但似乎不是从数据库中删除了吗?

这是我的articles_controller.rb

class ArticlesController < ApplicationController
    include ArticlesHelper

    def index
        @articles = Article.all
    end

    def show
        @article = Article.find(params[:id])
    end

    def new
        @article = Article.new
    end

    def create
        @article = Article.new(article_params)
        @article.save
        redirect_to article_path(@article)

    end

    def destroy
        @article = Article.find(params[:id])
        @article.destroy
        redirect_to article_path
    end
end

我的show.html.erb

<h1><%= @article.title %></h1>
<p><%= @article.body %></p>
<%= link_to "<< Back to Articles List", articles_path %>
<%= link_to "delete", article_path(@article) , 
        method: :delete , 
     data: {confirm: "Really delete the article?"}%>

articles.helper.erb

module ArticlesHelper

  def article_params
    params.require(:article).permit(:title, :body)
  end

end

我还运行了控制台并搜索了Article.find(1),它只找到了最多3的索引。

我一直在搞乱创建和删除文章(这就是为什么它取决于索引13),当我试图删除和文章时,我得到了这个错误:

ActiveRecord::RecordNotFound in ArticlesController#show

Couldn't find Article with 'id'=13

非常感谢任何建议或建议。

1 个答案:

答案 0 :(得分:0)

destroy操作中,将重定向更改为articles_path(复数)而不是单数版本。单数版本将尝试查找您刚刚删除的文章,该文章当然不再存在。

def destroy
    @article = Article.find(params[:id])
    @article.destroy
    redirect_to articles_path # pluralized the path
end