Rails ApplicationController

时间:2014-03-30 10:35:20

标签: ruby-on-rails

我正在关注rails教程(http://tutorials.jumpstartlab.com/projects/blogger.html#blogger-2),制作一个简单的博客。在其中一个练习中,它要求我为我的Articles_Controller实现destroy方法(文章是博客文章结构的模型)。

我已经实现了删除功能,但之后,当尝试重定向到article_path(@article)时,它无法找到记录(当然它已被删除)。我想知道如何重定向到索引页面?

删除文章后,我收到了rails错误页面:

error: ActiveRecord::RecordNotFound in ArticlesController#show 

我的app / controllers / articles_controller.rb:

def destroy
  @article = Article.find(params[:id])
  flash.notice = "Article '#{@article.title}' destroyed."
  redirect_to article_path(@article)
  @article.destroy
end

ArticleController#show中定义的方法

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

2 个答案:

答案 0 :(得分:0)

您可以使用重定向到索引路径 redirect_to articles_path

这样:

def destroy
  begin
    @article = Article.find(params[:id])
    if @article.destroy
      redirect_to articles_path, notice: "Article '#{@article.title}' destroyed."
    else
      redirect_to article_path(@article), alert: "Article could not be destroyed."
    end
  rescue ActiveRecord::RecordNotFound
    redirect_to articles_path, alert: "Article with id '#{params[:id]}' not found"
  end
end

答案 1 :(得分:0)

如果要重定向到应用程序的索引页面。你可以这样做。

def destroy
   @article = Article.find(params[:id])
   @article.destroy
   flash.notice = "Article '#{@article.title}' destroyed"
   redirect_to root_index
end