如何删除/销毁rails中的记录?

我正在构建一个基于railsguide的rails应用程序

http://guides.rubyonrails.org/getting_started.html 

它在erb中调用的语法是……

  

由于某些原因,这读作为

 https://localhost:3000/articles/[#] 

其中#是要删除的给定记录。 换句话说,我想删除一条记录,并将我的代码解释为显示所述记录。

我能做错什么?

更多信息

这是动态生成的

  Destroy  

application.html.erb具有以下内容……

   true %>  

控制器定义

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

在application.html.erb中使用’application’时出错

 ExecJS::ProgramError in Welcome#index Showing E:/scabase/app/views/layouts/application.html.erb where line #6 raised: TypeError: Object doesn't support this property or method (in C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/turbolinks- 2.5.3/lib/assets/javascripts/turbolinks.js.coffee) 

这完全正常。 在REST世界中,请求使用动词(GET,DELETE等)和标识资源的URI的组合。 如果您对同一资源(即同一篇文章)做了不同的事情,那么只有动词会发生变化。 对象的显示页面使用GET,更新操作使用PATCH(在rails 4.1之前的PUT)并且销毁记录使用DELETE

在实践中,链接总是导致GET请求,甚至表单只允许GET或POST,因此rails模拟剩余的方法 – 单击带有data-method=destroy属性的链接会创建一个表单,该表单使用隐藏的_method输入发布到URL值DELETE。 这是通过一些包含在新生成的rails应用程序中的javascript完成的。

你有

 <%= javascript_include_tag 'default', 'data-turbolinks-track' => true %> 

并且你已经表明你在加载default.js时遇到错误 – 我猜你正在遵循一套旧指令,因为在现代应用程序中(因为rails 3.1)这应该是

 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

您的application.js文件还应包含(除其他外)

 //= require jquery //= require jquery_ujs 

(您也可以使用原型或其他js库)

最有可能的是,Rails默认的javascripts没有被加载 – 特别是jquery_ujs。 这个javascript允许Rails解释DELETE调用,这些调用并不完全符合浏览器标准。

您加载的javascript名为“default”。 Rails标准是’应用程序’。 检查assets / javascripts中是否有’default.js’及其包含的内容。 如果您希望Rails开箱即用,只需转到:

 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> 

只要您没有更改application.js文件,这应该可以工作。

您展示的代码将执行两项操作:

1)它会创建一个javascript弹出窗口,询问“你确定吗?”。 这必须在客户端上运行,而不是在服务器上运行。 所以Rails在你的浏览器中生成一个看起来像#的“javascript”链接。

2)如果单击“是”,它将向您的服务器发送HTTP DELETE。 不幸的是,浏览器不容易这样做。 因此它会生成更多的javascript代码(AJAX)。

所以你看到的不是Ruby / Rails,而是Rails为你生成的Javascript代码。