g:formRemote не создает правильный код для обновления ресурса RESTful
Мы используем Grails 2.3.3 для нашего приложения.
Доступ к ресурсам должен осуществляться с помощью интерфейсов REST, поскольку к нему можно получить доступ из веб-браузера и других приложений.
Для этого UrlMapping.groovy содержит отображения REST, такие как:
"/toys"(resources:"toy")
Контроллер унаследован от ResftulController
import grails.rest.RestfulController
class ToyController extends RestfulController {
// Derived from RestfulController as described in
// http://grails.org/doc/latest/guide/webServices.html#REST
//
// All RAILS functions implemented in base class
static responseFormats = ['json', 'html']
ToyController() {
super(Toy)
}
}
У нас проблема с обновлением элементов с помощью g: formRemote с плагином jQuery.
<g:formRemote name="updateForm"
id="${toy.id}"
method="PUT"
url="[controller: 'toy', action:'update' ]">
При обновлении не используется правильный URL:
Request URL: http://localhost:8080/app/toy/update
METHOD: PUT
FORM DATA: ...
AFAIK URL должен быть таким:
Request URL: http://localhost:8080/app/toys/5252
METHOD: PUT
FORM DATA: ...
Это правильный способ использовать g: formRemote с ресурсами RESTful в Grails 2.3?
Должна ли g: formRemote использовать сопоставление URL для создания правильных URL?
g: link имеет атрибут атрибута для создания ссылок на ресурсы REST. Есть ли эквивалент для форм?
<g:link resource="${book}">My Link</g:link>
1 ответ
Вы не можете передать id таким образом через formRemote. То же самое относится и к params. Вы должны добавить их как часть блока параметров url, вот так.
<g:formRemote name="updateForm"
method="PUT"
url="[controller: 'toy', action:'update', id: toy.id]">