Ruby on rails 宁静的要求感

Ruby on rails 宁静的要求感,ruby-on-rails,http,rest,Ruby On Rails,Http,Rest,我有一个ruby on rails应用程序,现在我想知道RoR为什么使用Restful请求: 例如,如果您想删除一个ressource,最好使用这样的HTTP请求: DELETE /entry/13 您也可以通过这样一个普通请求来完成: GET/entry/delete/13或GET/entry/13/delete 现在我的问题是: 当我使用link_to helper链接到这种restful删除操作时 link_to :controller =>:delete, :id => i

我有一个ruby on rails应用程序,现在我想知道RoR为什么使用Restful请求: 例如,如果您想删除一个ressource,最好使用这样的HTTP请求:

DELETE /entry/13
您也可以通过这样一个普通请求来完成:
GET/entry/delete/13
GET/entry/13/delete

现在我的问题是: 当我使用link_to helper链接到这种restful删除操作时

link_to :controller =>:delete, :id => id, :method => :delete
它会产生一些神秘的javascript:

<a href="/entry/13" onclick="var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', 'GIep/wk5+6EMX23qY4TAP7joKy/G3f5uvMI6d6n9vlA='); f.appendChild(s);f.submit();return false;">Delete</a>

那么它背后的想法是什么呢?
在我看来,您只是排除了非javascript用户。

Rails<3的所有版本都使用非常突出的javascript(正如您所演示的,结果非常糟糕)

如果禁用javascript,该方法将返回使用GET的文档:

:method=>HTTP谓词的符号-此 修改器将动态创建一个 HTML表单,并立即提交 用于使用HTTP进行处理的表单 指定的动词。有益于 链接在中执行POST操作 危险的行为,如删除 记录(哪些搜索机器人可以跟踪) 在对站点进行爬网时)。支持 动词有:post、:delete和:put。 注意,如果用户有JavaScript 如果禁用,请求将回滚 使用GET。如果你是依靠 对于POST行为,您应该进行检查 在控制器的操作中 将请求对象的方法用于 发布?,删除?还是放

无论哪种方式,我建议您创建如下“销毁”链接:

# when you have an "entry" object
link_to "Destroy", entry, :method => :delete

# when you only have an "entry" object's id
link_to "Destroy", entry_path(:id => id), :method => :delete