【问题标题】:How to delete without javascript如何在没有 javascript 的情况下删除
【发布时间】:2013-01-29 12:07:54
【问题描述】:

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

只要我的 app/view/layout/application.html.haml 文件包含以下内容,一切都可以工作:

!!! 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 操作。

有什么想法吗?

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2


    【解决方案1】:

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

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

    POST /some-object/delete/
    

    POST /some-object/?action=delete
    

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

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

    【讨论】:

      【解决方案2】:

      Ryan Bates 就这个问题制作了一篇精彩的 RailsCasts 插曲:Destroy without JavaScript

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 2013-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多