0

我目前使用 revel 作为底层网络框架。我的模板/逻辑非常基本。我从数据库中获取 []*someObject 并希望将其显示在表格中。

{{ if .objs}}
    {{ range .objs }}
    <tr>
      <td><span>{{ .Title }}</span></td>
      <td>x</td>
      <td>y</td>
      {{ $id := .Id}}
      <td><a href="{{url "ObjectController.ViewObj" .Id}}">View {{ $id }}</a></td>
    </tr>
    {{ end }}
{{ end }}

但是,这会产生“模板运行时错误,索引超出范围”而没有更多信息。问题是网址部分。

{{url "ObjectController.ViewObj"}}

作品。没有额外.Id的就很好了,但是因为我想将 id 传递到 url 中,所以这不是一个选项。

路线是:

/lobby/view/:objid                  ObjectController.View

编辑(已修复): 显然我忘了添加 id 作为参数:

func (c ObjectController) View(id int64) revel.Result

我不知道它会引发这样的错误,我希望出现更具体的错误。

4

1 回答 1

0

您可能在路由文件中缺少路由参数。

当您尝试使用参数 (Id) 获取 URL 时,到 ObjectController.ViewObj 的路由应如下所示:

GET /your/route/:id ObjectController.ViewObj

如果您忘记了 :id,那么在尝试反转 URL 时会出现“索引超出范围”错误。

于 2014-04-25T14:12:39.813 回答