RESTful understand POST VS PUT
CRUD-based action names get things simpler
create -> POST
show -> GET
PUT -> update
delete -> DELETE
运行一下看看吧~
总结一下HTTP请求跟action的4-7关系表:
其实HTML规格只支持GET/POST,不支持PUT和DELETE方法的,rails在生成HTML的时候偷偷的做了一些处理。
我们写的代码是这样的:
源码 打印 ?
<%##event_path默认是GET,删除需要指定:method##%> <%= link_to 'delete' , event_path(event), :method => :delete %>生成的HTML是这样的:
源码 打印 ?
<a 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', 'TwKvS1qYjCaO2RQ3QlCdo3K57NfH0yTqKShmMk8jjI0='); f.appendChild(s);f.submit();return false;" href= "/events/1" >delete</a>当点击的时候,实际上在页面上生成了下面内容:
源码 打印 ?
<form id= "edit_events_1" method= "post" action= "/events/1" > <input type= "hidden" value= "put" name= "_method" /> .... </form>其实各种浏览器之间还有一些关于DELETE和PUT一些支持或者不支持的不统一现象,这些问题Rails处理掉了,我们不需要关注了。
另外,XmlHttpRequest(Ajax request)定义了GET/POST/PUT/DELETE/HEAD/OPTIONS
不过不是所有浏览器都支持。
查看更多关于RESTful understand POST VS PUT的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did44045