【问题标题】:Rails using REST resource and being able to delete without a formRails 使用 REST 资源并且能够在没有表单的情况下删除
【发布时间】:2012-01-22 12:39:41
【问题描述】:

Rails 通过使用 POST 和表单中的隐藏字段来模拟对资源的 DELETE。但这使得必须使用表单来删除记录。 但是,如果我想通过显示在行末尾的锚标记“删除”来删除一行,我将如何实现呢?所以说我正在显示人员记录,我的行看起来像:

||名字||姓氏||
||富 ||酒吧 ||删除
||巴兹 ||富 ||删除
...

在删除单击时,我想在不使用表单和隐藏字段的情况下路由到 /people/:id/destroy?

【问题讨论】:

  • 我知道我可以添加:map.connect 'people/:id/destroy',:controller => 'people', :action => 'destroy' 但是我只想使用地图。资源:我已经拥有的人,它适用于除删除之外的所有人。

标签: ruby-on-rails rest


【解决方案1】:

Rails 的link_to 方法支持GETPOSTPUTDELETE HTTP 动词。例如,您可以执行以下操作:

link_to "Delete", person_path(@person), method: :delete, confirm: "Are you sure?"

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

【讨论】:

  • 太棒了,就像一个魅力。 Rails 为 href 添加了一个 onClick 事件,然后使用 JS 设置整个表单。不错!
  • @Turd 但是这对于关闭 JS 的浏览器如何工作?他们不应该也可以使用链接吗?
  • 如果不启用 JS,此解决方案将不起作用。链接无法发送 DELETE 请求。当您指定method: :delete 时,它所做的只是将data-method 属性添加到rails-ujs 监视的链接。如果您需要一个无需 js 的解决方案,而您需要使用 button_to 并将按钮样式设置为看起来像一个链接。
猜你喜欢
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多