Грааль: динамическая форма - PullRequest
0 голосов
/ 08 июля 2011

У меня проблема с удалить автора из книги .

У меня есть класс Книга и класс Автор в Однонаправленная связь:

class Book{

    String isbn
    ...

    List<Author> authors
    static hasMany = [ authors: Author ]
}

class Author {

    String firstname
    String lastname
    ...

}

примечание: в классе Author нет принадлежащих .

Я использую динамическую форму: enter image description here

Обратите внимание на кнопки Добавить автора и Удалить автора . Я использую JavaScript для добавления HTML-кода для формирования или удаления HTML-кода из формы.

После этого я сохраняю класс Book в контроллере:

 def save = {
            def book = new Book()

            if (params.id){
                book = Book.get(params.id)                     
            }

            book.properties = params

            if( book.save() ){
                redirect(controller:"book", action:"all")
                return
            }else{
                render(view:'form', model:["book": book])
                return
            }
        }

Хорошо работает для Добавить автора и для Редактировать автора , но не для Удалить автора . Если я использовал кнопку «Удалить автора» и нажал кнопку «Отправить», автор не удаляется из Книги . Есть все авторы, как и до редактирования.

Пожалуйста, вы можете помочь мне с этой проблемой? Это хорошее решение этой проблемы?

Большое спасибо Том

1 Ответ

2 голосов
/ 08 июля 2011

Grails не сможет узнать, какого автора вы хотите удалить, если вы не отправите ID автора для удаления в вашем запросе и явную инструкцию для Grails, чтобы удалить его.На данный момент ни один автор в params не означает удаление автора.

Так что вам нужно будет что-то сделать в своей форме, чтобы при "удалении автора" вы сохраняли идентификатор автора для удаления вскрытое поле, а также что-то, чтобы указать это для удаления.Тогда что-то вроде ...

def authorToRemove = Author.get(params.authorId)
def book = Book.get(params.id)
book.removeFromAuthors(authorToRemove)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...