【问题标题】:Cannot implement delete in Rails controller无法在 Rails 控制器中实现删除
【发布时间】:2017-12-11 10:49:36
【问题描述】:

我正在关注这个tutorial 来构建一个简单的博客端。

但是,我无法实现教程中显示的删除功能。

给出的步骤如下:

让我们在 ArticlesController 中定义 destroy 方法:

  • 使用 params[:id] 在数据库中查找文章

  • 对该对象调用 .destroy

  • 重定向到文章索引页面

现在就自己动手并测试一下。

这是我的代码:

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
        flash.notice = "Article '#{@article.title}' Created!"
        redirect_to article_path(@article) 
    end

    def destroy
        @article = Article.find(params[:id])
        @article.destroy
        redirect_to articles_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 %>

article_helper.rb

module ArticlesHelper

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

end

我在网上浏览了其他解决方案,但没有看到任何我可能遗漏的代码。

在我的例子中,点击删除链接只会导致页面刷新。

【问题讨论】:

  • 为什么是private?向上移动
  • 谢谢,我在 github 上关注修改后的教程,我按照较新的教程更新了代码,但它仍然不起作用。
  • 错误是什么?
  • 也添加日志
  • 没有,点击删除按钮后页面重新加载,没有任何反应。我对 Rails 很陌生,日志是反映在文件中还是直接反映在控制台中?此外,如果有帮助,其他方法也可以正常工作。

标签: ruby-on-rails ruby


【解决方案1】:

private 控制器中的方法不能在控制器外部访问,即使是路由也是如此。因此,您将永远无法在当前代码中路由到 destroyarticle_params。如果您将 destroy 方法移到 private 关键字上方,应该可以解决问题。

【讨论】:

  • 谢谢,我在 github 上关注修改后的教程,我按照较新的教程更新了代码,但它仍然不起作用。
【解决方案2】:

我发现了问题:

安装程序在 Windows 上运行。我之前申请了fix,因为页面无法加载。

此修复导致此处出现错误:

ActionController::RoutingError(没有路由匹配 [GET] “/javascripts/default.js”):

解决此问题的方法是撤消上述先前的更改并遵循修复here

显然,coffee-script-source 1.9 及更高版本无法在 Windows 上运行。

【讨论】:

  • 一个快速的建议,使用 linux/ubuntu,当然 MacOS 也可以.. :)
猜你喜欢
  • 1970-01-01
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多