Динамически добавлять активный класс в li в Rails с помощью Slim

Я пытаюсь добавить активный класс в список элементов при использовании slim. Прямо сейчас у меня есть следующий код:

      li.nav-active = link_to 'One', '/one'
      li.nav-active = link_to '2', '/2'
      li = link_to 'A', '/a'
      li = link_to 'B', '/c'
      li = link_to 'D', '/d'

Тогда в качестве помощника я использую:

def create_link(text, path)
 class_name = current_page?(path) ? 'nav-active' : ''

 content_tag(:li, class: class_name) do
   link_to text, path
 end
end

Это не похоже на настоящую работу. Первые два элемента списка автоматически применяют CSS к nav-active независимо от того, являются ли они активными.

Итак, я переключился на следующее:

      li#{active_class('/one')} = link_to 'One', '/one'
      li.nav-active = link_to '2', '/2'
      li = link_to 'A', '/a'
      li = link_to 'B', '/c'
      li = link_to 'D', '/d'

Со следующим помощником:

def active_class(link_path)
  current_page?(link_path) ? "nav-active" : ""
end

Проблема здесь в том, что я получаю Slim :: Parser :: SyntaxError. Ожидаемый атрибут.

Итак, есть ли хороший способ применить активный класс для текущей страницы при использовании Slim?


person Jake    schedule 26.03.2018    source источник


Ответы (1)


На всякий случай, если кому-то нужно знать это на будущее, вот ответ.

li class="#{active_class('/url')}" = link_to 'Name', '/url'
person Jake    schedule 26.03.2018