我正在尝试让我的应用程序在没有javascript的情况下使用DELETE操作。
只要我的应用程序/视图/布局/应用程序.html.haml 文件包含以下内容,evrything 就可以工作:
!!! 5
%html
%head
%title My application
= stylesheet_link_tag 'screen', :media => 'screen, print, projection'
/[if IE]
// CSS for IE
= javascript_include_tag 'application'
= csrf_meta_tags
%body
...
如果我删除= javascript_include_tag 'application'
指令。我不能再删除任何记录。相反,Rails正在执行SHOW操作。
知道吗?
编写 HTML 表单时仅支持两种方法是 post
和 get
。如果要使用 delete
或 put
方法,则必须使用 AJAX。
这就是为什么大多数网站使用纯帖子请求并使用特殊 URL 的原因。
POST /some-object/delete/
或
POST /some-object/?action=delete
即使是最新的HTML5草案也不允许除post
或get
以外的任何其他方法:http://www.w3.org/html/wg/drafts/html/master/forms.html#attr-fs-method
Rails 提供了一个用于执行put
和delete
请求的填充代码。我发现这很麻烦,特别是因为当JavaScript被禁用时,代码会做一些完全不同的事情。
Ryan Bates 在这个问题上做了一个很好的 RailsCasts 插曲:没有 JavaScript 的破坏。
他只是建议添加一个额外的GET成员路由,当JS被禁用时,这将导致相同的控制器操作。