У меня есть два класса домена автор и книга, связанные как 1 ко многим. Когда я создаю новую книгу для конкретного автора, Я хочу перенаправить (после нажатия кнопки сохранить) на действие показать контроллера автора, чтобы показать полную информацию о конкретном авторе со списком всех книг, которые он написал.
class Author {
String fistName
String secondName
static hasMany = [books: Book]
}
class Book {
String title
String dateOfPublication
//Author author
static belongsTo = [author: Author]
}
//BookController
def save() {
def bookInstance = new Book(params)
if (!bookInstance.save(flush: true)) {
render(view: "create", model: [bookInstance: bookInstance])
return
}
flash.message = message(code: 'default.created.message', args: [
message(code: 'book.label', default: 'Book'),
bookInstance.id])
if(params.tempid){
redirect(action: "show", controller: "author", id: params.id)
}else{
redirect(action: "show", id: params.tempid)
}
}
Однако приведенный выше код не перенаправил меня, как я хотел, но вместо этого выполнил оператор else с флэш-сообщением » книга не найдена с id null»
Ниже эта _книга.GSP шаблон визуализации внутри шоу.gsp авторского класса.
<table class="table table-striped table-hover" id="book-data">
<thead>
<th class="sortable">Title</th>
<th class="sortable">Date of Publication</th>
</thead>
<tbody>
<g:each in="${authorInstance.book}" status="i" var="p">
<tr class="prop">
<td style="vertical-align: middle;" valign="top" class="value">${p?.title}</td>
<td style="vertical-align: middle;" valign="top" class="value">${p?.dateOfPublication}</td>
<td style="vertical-align: middle;" valign="top"><g:link class="btn btn-edit" action="edit" controller="book" id="${p?.id}"> Edit</g:link></td>
</tr>
</g:each>
</tbody>
</table>
Как мне сделать это правильно.?
Спасибо за помощь.
Отредактировано: authorInstance.id изменен на params.id
Если вы хотите перенаправить на ваш экземпляр автора после сохранения
book
, вы должны отправить параметры запроса автора вid
пределах сохранения. По умолчанию идентификатор автора содержится вparams
map asauthor.id
.Так что это должно сработать:
redirect(action: "show", controller: "author", id: params.author.id)