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. Введите имя, сохранить затем Edit:
<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 HADS скрытого поля для имитации запроса 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 трюк)
К сожалению, это не может считаться полным решением, поскольку оно работает только для кодированных URL-адресов (форм) и не работает с JSON или XML, что является более распространенным способом выполнения запросов с GWT – skrat 2009-11-24 13:26:53