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]">
Другие вопросы по тегам