Rails 3的“数据方法=”删除“”降级优雅吗?

Rails 3做了一些很酷的事情,使JavaScript不显眼,所以他们做了这样的事情:

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

..转换为

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

但它只是发生在我身上..当我closuresJavaScript的方法不DELETE了,它是GET的预期。 那么是否有计划或有某种方式允许这些data-属性优雅地降级,以便链接仍然是DELETE请求?

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

在Rails 2中,在链接上指定:method => :delete会生成一大堆内联JavaScript,它将创build一个隐藏input的表单,然后提交表单。 这和现在一样:closuresJavaScript,它默认为GET请求。 因此,支持没有JavaScript的情况和以前一样。

一种select是使用表单/button而不是链接,这样就可以将方法作为隐藏字段来包含,就像Rails 2 JavaScript一样。 另一个select是让GET版本带你进入一个中间页面,该页面又具有/button的forms。

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

而不是使用link_to方法 – 这将要求您使用JavaScript来确保HTTP方法是DELETE – 使用button_to方法,该方法将创build一个带有隐藏input元素的表单,告诉Rails将HTTP方法视为DELETEPOST 。 如有必要,您可以使用CSS来设置表单中的button样式,使其看起来像一个链接。

你唯一的机会是定义一个表格。 链接不能是_method =“delete”的POST,没有Javascript或表单。

这是不可能的,没有JavaScript。

我做了一个小的jQuery插件,用于将data-method链接属性转换为伪隐藏表单(例如,在laravel项目中使用)。

如果你想使用它: https : //github.com/Ifnot/RestfulizerJs

Interesting Posts