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方法视为DELETE
比POST
。 如有必要,您可以使用CSS来设置表单中的button样式,使其看起来像一个链接。
你唯一的机会是定义一个表格。 链接不能是_method =“delete”的POST,没有Javascript或表单。
这是不可能的,没有JavaScript。
我做了一个小的jQuery插件,用于将data-method
链接属性转换为伪隐藏表单(例如,在laravel项目中使用)。
如果你想使用它: https : //github.com/Ifnot/RestfulizerJs