当前位置: 首页 > 知识库问答 >
问题:

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

强德厚
2023-03-14

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

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

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

<td><%= link_to 'Destroy', article_path(article),
          method: :delete,
          data: { confirm: 'Are you sure?' } %></td>
https://localhost:3000/articles/[#]
<td>
  <a rel="nofollow" data-method="delete" href="/articles/2">Destroy</a>
</td>
 <%= javascript_include_tag 'default', 'data-turbolinks-track' => true %>
 <%= csrf_meta_tags %>

控制器定义

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)

共有1个答案

曹茂材
2023-03-14

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

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

你有

<%= javascript_include_tag 'default', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
//= require jquery
//= require jquery_ujs

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

 类似资料:
  • 两者的区别是什么 和 例如: 我用这个或那个真的重要吗?

  • 我有一个模范国家,因此有一个表国家。countries表作为iso国家和货币代码的集合,不应该减少这些内容(在我用种子数据填充之后)。因为Country是ActiveRecord::Base的一个子类,所以它继承了诸如destroy、delete_all等类方法来删除记录。我正在寻找一种解决方案,以防止在模型级别删除记录。 Ofc。我知道我可以使用面向对象的方法来解决这个问题,方法是重写这个方法(

  • C++20引入了“destroying”(带有标记类型),是的新重载。 这到底是什么,什么时候有用?

  • 我有一个并发运行代码,每次运行都需要在文件中记录一些内容。每个执行-新的故事与唯一的文件。 事先谢谢你,安德烈!

  • 问题内容: 我在接受以下采访时遇到了这个问题: 如何在Java中销毁对象? 答案应该是e? 如果e不在那里怎么办?然后 ?显然,c不是答案。a和b将为整个应用程序执行gc(问题需要一个对象)。我认为这是d,因为finalize()刚好在gc之前被调用(但是是否有必要在finalize gc之后被调用?)还是我错了?您必须在那里回答这个问题吗? 问题答案: 答案E是正确答案。如果E不存在,您将很快用

  • 问题内容: 据我所知(很少),给出了两种方法: 然后: 其他更好的方法?我在这里劈头发吗? 问题答案: 您正在寻找。 但是要考虑到 您不能显式销毁对象。 它会保留在那里,但是如果您取消设置对象,并且脚本将PHP推入内存限制,则不需要的对象将被垃圾回收。我会选择(而不是将其设置为null),因为它似乎具有更好的性能(未经测试,但已记录在PHP官方手册的注释中)。 也就是说,请记住,PHP总是在页面被