Передать текущий маршрут в шаблон

Я играю с Голангом уже пару недель, и недавно начал изучать структуру игры.
На других языках / платформах, которые я использовал, всегда можно было проверить, какой текущий маршрут находится внутри шаблона. Что-то, что помогло мне сохранить такие вещи, как навигация, в отдельном файле шаблона, и просто сделать это:

<!-- 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
}

Это работает нормально, но кажется немного хакерским. Я думаю, что, возможно, мне не хватает чего-то действительно очевидного, что позволило бы мне зарезервировать функциональные перехватчики на тот случай, когда они мне действительно нужны.

Таким образом, вопрос прост: как правильно и наиболее надежно выяснить, что представляет собой текущее действие в шаблоне?

0 ответов

Другие вопросы по тегам