Rails 通过隐藏属性做到这一点。解决这个问题的最简单方法是创建一个新的 rails 应用程序,生成一个脚手架并在浏览器中查看 HTML。
试试这个:
rails jp
cd jp
./script/generate scaffold RequestBuilder name:string
rake db:migrate
./script/server
然后导航到http://localhost:3000/request_builders,单击 New 并查看 HTML。你会看到类似的东西:
<form action="/request_builders" class="new_request_builder"
id="new_request_builder" method="post">
<div style="margin:0;padding:0">
<input name="authenticity_token" type="hidden" value="e76..." />
</div>
这是一个创造,方法是POST。输入名称,保存然后编辑:
<form action="/request_builders/1" class="edit_request_builder"
id="edit_request_builder_1" method="post">
<div style="margin:0;padding:0">
<input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden" value="e76..." />
</div>
当然表单是通过 POST 发送的,但是 Rails 有一个隐藏字段来模拟 PUT 请求。删除也一样,但脚手架会用一点 Javascript 来完成:
var m = document.createElement('input');
m.setAttribute('type', 'hidden');
m.setAttribute('name', '_method');
m.setAttribute('value', 'delete');
要将这项工作与另一个前端一起使用,您必须同时具备以下条件:
- 使用相同样式的 URL,例如 /request_builders/1(RESTful URL)
- 包括隐藏字段(Rails 技巧)