0

我试图让我的应用程序在没有 javascript 的情况下使用 DELETE 操作。

只要我的 app/view/layout/application.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 操作。

任何的想法 ?

4

2 回答 2

3

编写 HTML 表单时唯一支持的两种方法是postget。如果要使用deleteorput方法,则必须使用 AJAX。

这就是为什么大多数网站使用普通的 post 请求并使用特殊 URL 的原因。例如

POST /some-object/delete/

或者

POST /some-object/?action=delete

甚至最新的 HTML5 草案也不允许使用除postor以外的任何其他方法:http get: //www.w3.org/html/wg/drafts/html/master/forms.html#attr-fs-method

Rails为执行和请求提供了一个polyfill 。我发现这很麻烦,尤其是当禁用 JavaScript 时代码会做一些完全不同的事情。putdelete

于 2013-01-29T12:13:36.657 回答
1

Ryan Bates 在这个问题上做了一个很好的 RailsCasts 插曲:Destroy without JavaScript

他只是建议添加一个额外的 GET 成员路由,当 JS 被禁用时,这将导致相同的控制器操作。

于 2013-01-29T12:21:10.007 回答