将当前路由传递给模板

时间:2016-01-01 17:37:16

标签: templates go revel go-templates

我已经和golang玩了几个星期了,最近开始调查狂欢框架。
在我使用的其他语言/框架中,始终可以检查模板中当前路由的来源。有些东西让我更容易将导航等内容保存在单独的模板文件中,只需执行此操作:

<!-- in header template -->
<ul class="nav">
    {{ if eq .req.action "App.Index" }}
        <li class="active"><a href="#">
    {{ else }}
        <li><a href="{{url "App.Index" }}">
    {{end}}
    Home</a></li>
    <!-- other links here -->
</ul>

这不是我正在编写的实际代码,但我希望这清楚地说明了这个想法是什么:为导航提供方便的模板,并根据当前操作设置类/链接。<登记/> 经过一段时间浏览源代码和一些golang模板示例后,我无法完全看到当前操作或其他任何内容暴露给模板的方式。

为了解决这个问题,我目前正在使用func拦截器为我自动设置渲染参数:

func prependRoute(c *revel.Controller) revel.Result {
    c.RenderArgs["_current_route"] = c.Action
    return nil
}

这个工作正常,但感觉有点hacky。我想我可能遗漏了一些非常明显的东西,这些东西可以让我在真正需要它时保留func拦截器。

问题 很简单:找出revel模板中当前操作的正确,最可靠的方法是什么?

0 个答案:

没有答案