Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何创建到rails资源的删除链接?_Ruby On Rails_Ruby On Rails 3_Http_Http Headers_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 如何创建到rails资源的删除链接?

Ruby on rails 如何创建到rails资源的删除链接?,ruby-on-rails,ruby-on-rails-3,http,http-headers,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Http,Http Headers,Ruby On Rails 3.2,如果我想在rails中创建一个DELETE链接,我将编写以下代码(在本例中是为了删除Desive中的用户会话): :删除)%> 将转换为以下HTML: <a rel="nofollow" data-method="delete" href="/users/sign_out">Logout</a> 非常好,除了我不能简单地将HTML放入静态HTML页面之外。它只需执行一个GET请求。我假设Rails包含一些标准Javascript,将上述链接转换为实际执行删除请求的

如果我想在rails中创建一个DELETE链接,我将编写以下代码(在本例中是为了删除Desive中的用户会话):

:删除)%>
将转换为以下HTML:

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


非常好,除了我不能简单地将HTML放入静态HTML页面之外。它只需执行一个GET请求。我假设Rails包含一些标准Javascript,将上述链接转换为实际执行删除请求的链接。那么,在静态HTML页面上链接到执行删除操作的Rails资源的正确方法是什么呢?我应该在所有这样做的网页中找到并抓取Javascript Rails吗?有更好的方法吗?

Rails使用JavaScript处理
删除链接

它创建一个不可见表单,并在您单击具有
“delete”
属性的
数据方法的链接时提交该表单

查看中的
handleMethod

当您包含
rails.js
(如果您使用的是jQuery)时,静态页面中的删除链接可能会正常工作。
如果没有,您可以按照
handleMethod
中的方式自行构建表单。

您不能使用锚链接发送
删除
请求,不幸的是,传统锚链接只会发送
获取
请求。实际上,您根本无法发送真正的
DELETE
请求。如果您想在不使用javascript的情况下创建删除链接,那么解决方案相当简单。查看2.4使用PUT或DELETE方法的表单是如何工作的?在公园里。基本上,您可以使用
delete
方法简单地创建一个提交到资源url的表单。它非常简单,而且您不需要依赖javascript来完成工作。希望这会有所帮助,祝你好运。

因为我的一些同事正在开发一个本机应用程序,用户可能没有在浏览器上启用JavaScript,在这种情况下,删除链接将不起作用,我们将获得显示页面,而不是删除……因此,如果你不确定用户是否可以在其浏览器上启用JS,您始终可以使用GET或POST方法生成一个路由,以执行控制器的删除操作……这种方法也适用于静态HTML页面。

如果我只想删除链接,那么包含整个rails.js似乎有些过分。我可以从中复制javascript,或者插入整个表单,然后在单击链接时使用javascript提交表单。。。看起来Rails应该附带一个小Javascript代码段来处理非Rails网页中的这类事情。当然有不同的方法来处理这类事情。您还可以包含表单而不是链接和所有JavaScript,并设置提交按钮的样式,使其看起来像常规链接。这违反了REST协议。。。我宁愿假设他们启用了JS。我知道这是违反REST协议的,但我正在分享我的经验,在没有JS或任何其他客户端脚本支持的情况下如何实现这一点……想象一下,你的应用程序运行在Windows 98或NT上,而他们仍然没有看到JQuery和其他脚本的酷商…@at it这无关紧要,因为现在的浏览器无法遵循REST协议。我不明白为什么Rails的默认支架会提出一个必须启用javascript的解决方案。但是我不能有一个普通的链接作为表单的post按钮。。我认为样式必须非常复杂,才能看起来像链接。我认为使用rails.js的选择性部分是很常见的,但在这种情况下,如果你反对使用rails.js,诚实地说,使用缓存和资产管道,你可以在锚中添加一个onclick处理程序来提交表单,将其变成一个简单的单行程序,包括rails.js似乎并不是一个不必要的大增加。包括它还将使应用程序的行为更接近应用程序的未来维护者期望它的行为(因此,如果他们使用rails.js的另一个元素,他们不会发现它丢失)。我想我希望的是rails项目维护的rails_delete_link.js类型的文件,我可以包括它。但是包含整个rails.js似乎是次好的选择。你从错误的角度出发了。破坏性操作(如删除)首先不应显示为链接。
<a rel="nofollow" data-method="delete" href="/users/sign_out">Logout</a>