2013-09-06 3 views
2

Я использую следующий синтаксис в Playframework 2.0, чтобы выяснить, что данный Bootstrap nav li должен быть активным или нет, но он не работает! Любая идея, что я пропустил здесь?Play 2.0 + Bootstrap3: Показать активный элемент навигации

Ниже фрагмент из моего шаблона playframework, где я пытаюсь сделать Главный литий активным, если текущий путь запроса совпадает с индексом маршрутов/домом

@* Home page is active. *@ 
<li [email protected]{"active".when("@request.path" == "@routes.Application.index()")}> 
    <a href="@routes.Application.index()">Home</a> 
</li> 

ответ

2

Я не знаю, играть, но используя свои шаблоны в моих проектах.

Как об этом способе:

@* Home page is active. *@ 
<li [email protected]{if (request.path == routes.Application.index().toString()) "active" else ""}> 
    <a href="@routes.Application.index()">Home</a> 
</li> 
+0

@Alexlv - это не работает, потому что routes.Application.index() возвращает ссылку на класс с именем 'Call' который возвращает false по сравнению с выводом 'String' из' request.path'. Спасибо. – Hemant

+0

@Hemant Я думаю, что мое решение также сработало бы, если вы вызовете toString в 'index()', но я не уверен. – 4lex1v

+0

@Alexlv - Да, это работает после того, как toString() или url вызывается на выходе индекса(). Я узнал об этом из принятого ответа. – Hemant

1

Попробуйте это:

<li class="@("active".when(request.path == controllers.routes.Application.index().toString()))"> 
    <a href="@routes.Application.index()">Home</a> 
</li> 
+0

Ваше решение сработало! Это был вызов 'toString()' on 'routes.Application.index()', который сделал разницу. Позже я отлаживал и обнаружил, что это связано с тем, что route.Application.index() возвращает ссылку на класс с именем 'Call', который имеет свойство с именем' url'. Кроме того, вместо 'routes.Application.index(). ToString()' мы также можем используйте 'routes.Application.index(). url'. Спасибо, приятель! – Hemant

Смежные вопросы