Grails 将参数从循环传递到控制器

Grails pass parameter from loop to controller

在 Grails 中,我试图从 (HTML) table 中删除一条记录,我想通过将对象的 ID 传递给控制器​​来实现此目的。所以在 HTML 中有一个 table 并且用户单击 "delete" 并且该项目从数据库中删除。 (此逻辑根据单元测试工作,问题是从视图 -> 控制器传递 ID) 我已经尝试了在这里找到的几种解决方案,例如

<g:each in="${recipe}" var="item">
<tr>
   <td>
      ${item.recipeName}
   </td>
   <td>
      ${item.people}
   </td>
   <td>
      <g:link controller="UserRecipe" action="delete" params="[id: '${item.id}']" class="class">Info to Display</g:link></tr>
</g:each>

虽然 id 的值 = null,但它没有崩溃但正确调用了控制器。例如,当我手动编辑 url 并添加 /4 时,ID 将为四。这里的几个解决方案展示了如何传递参数,但是当我尝试传递一个参数时会出现错误,我使用这些解决方案使用 ${} 表示法访问该参数,例如使用 createLinkparams 列表,它会使应用程序崩溃,因为它似乎是一个嵌套的 ${${}}。

您需要将参数更改为:

params="[id: item.id]"