我有两个域类作者和书籍相关为1对多。在为特定作者创建新书时,我想将(在单击保存按钮时)重定向到作者控制器的show动作,以便显示特定作者的完整详细信息以及他创作的所有书籍的列表。 / p>
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)
}
}
但是上面的代码并没有像我想的那样重定向我,而是使用flash消息“找不到id为null的书”来执行else语句
下面是在Author class的show.gsp中呈现的这个_book.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
答案 0 :(得分:0)
如果要在保存book
后重定向到作者实例,则应在保存请求参数中发送作者id
。默认情况下,作者ID包含在params
地图中author.id
。
所以这应该工作:
redirect(action: "show", controller: "author", id: params.author.id)