ruby-on-rails - Rails 3's "data-method ='delete'“如何优雅降级?

标签 ruby-on-rails ruby-on-rails-3 unobtrusive-javascript graceful-degradation

Rails 3 做了一些很酷的事情来使 Javascript 不引人注目,所以他们做了这样的事情:

= link_to "Logout", user_session_path, :method => :delete

..转换为

<a href="/logout" data-method="delete" rel="nofollow">Logout</a>

但这只是我想到的。当我关闭 javascript 时,该方法不再是 DELETE,而是按预期获取。那么是否有计划或有某种方法允许这些 data- 属性正常降级,以便该链接仍然是 DELETE 请求?

最佳答案

他们在 Rails 3 中使用这些 data- 属性所做的更改并不是关于优雅的降级,而是关于不引人注目的 JavaScript。

在 Rails 2 中,在链接上指定 :method => :delete 将生成一大堆内联 JavaScript,这些 JavaScript 将创建一个带有隐藏输入的表单,然后提交该表单。那时和现在是一样的:关闭 JavaScript,它默认为 GET 请求。因此,支持没有 JavaScript 的情况与以前相同。

一种选择是使用表单/按钮而不是链接,这样您就可以将该方法作为隐藏字段包含在内,就像 Rails 2 JavaScript 所做的那样。另一种选择是让 GET 版本将您带到一个中间页面,该页面又包含表单/按钮。

新方法的好处是它不引人注目。用于更改 HTTP 谓词的 JavaScript 存在于外部文件中,并使用 data- 属性来确定应将其附加到哪些元素。

关于ruby-on-rails - Rails 3's "data-method ='delete'“如何优雅降级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2809200/

相关文章:

ruby-on-rails - 在 ruby​​ 中创建多级常量

ruby-on-rails - 通过 ruby​​ 在谷歌驱动器中创建文件夹时出错

mysql - 带有 mysql 问题的 Rails 3

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - 如果启用了 JavaScript,如何在网页上生成不同的链接?

ruby-on-rails - 覆盖Rails 3 Engines提供的命名路由

ruby-on-rails - 此 RMagick 安装是使用 ImageMagick 6.6.9 配置的,但正在使用 ImageMagick 6.7.7-10

ruby-on-rails - 如何使用 Rails 在 PostgreSQL 中处理 GROUP BY?

ruby-on-rails - link_to 删除 url 不起作用

jquery - 使用 JavaScript 提交 Rails 远程表单