Rails 3做一些很酷的事情以使JavaScript变得不引人注目,因此他们做了这样的事情:

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

..转换为

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

但是它只是发生在我身上..当我关闭JavaScript时,该方法不再删除,它已得到预期。因此,是否有计划或有其他方法可以允许这些 data- 优雅降级的属性,以便链接仍然是删除请求?

有帮助吗?

解决方案

他们在铁路3中所做的更改与这些 data- 属性与优雅的退化无关,而是关于javaScript的不可思议。

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

一种选项是使用表单/按钮而不是链接,因此您可以将方法包括为隐藏字段,就像Rails 2 JavaScript一样。另一个选择是让Get版本将您带到一个中间页面,该页面依次具有表单/按钮。

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

其他提示

而不是使用 link_to 方法 - 这需要您使用JavaScript来确保HTTP方法为 DELETE - 使用 button_to 方法,它将创建具有隐藏输入元素的表单,该元素告诉Rails将HTTP方法视为 DELETE 而不是 POST. 。如有必要,您可以使用CSS在表单中为按钮样式,以使其看起来像一个链接。

您拥有的唯一机会是定义表格。没有JavaScript或通过表单,链接不能是_method =“ delete”的帖子。

没有JavaScript是不可能的。

我制作一个小型插件用于转换 data-method 链接属性与伪隐藏形式(例如,在Laravel项目中使用)。

如果您想使用它: https://github.com/ifnot/restfulizerjs

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top