Я довольно плохо знаком с рельсами и хотел бы помочь с реализацией динамического меню с использованием партиалов.
На данный момент мой код выглядит следующим образом:
частичное меню:
.three.columns
%ul#nav
%li{:class => @active_page=="about" ? "active_page" : ""}
%a{:href => "../pages/about"} About
%li{:class => @active_page=="careers" ? "active_page" : ""}
%a{:href => "../pages/careers"} Careers
%li{:class => @active_page=="contact" ? "active_page" : ""}
%a{:href => "../pages/contact"} Contact
вид:
html...
= render :partial => 'shared/aboutmenu_nav'
more html...
помощник по страницам:
def @active_page(c)
controller.action_name == c
end
Примечание: active_page
- это класс, который я хотел бы передать li
, если пользователь находится на соответствующей странице. Например, если пользователь находится на странице контактов, класс active_page будет передан только элементу Contact li.
Я пробовал несколько решений, включая создание нескольких версий CSS и передачу класса на body
, соответствующего странице? например,
%body{:class => @page_name}
и затем определение @page_name в pages_helper следующим образом:
def page_name
@path.parameterize('_') unless @path.blank?
end
Кажется, что ни одна из этих версий не работает, так как предыдущая (@active_page) не дает никаких результатов. Точно так же я не смог назначить класс для тега body - когда я проверял исходный код, тег body не имел классов.
Буду признателен за помощь в реализации динамического меню с использованием партиалов. Если есть метод, который я не попробовал, пожалуйста, не стесняйтесь сообщить мне. Я искренне благодарен за вашу помощь и очень благодарен за ваше время! Спасибо!
Использование решения Канадыда. На странице буквально отображается следующий текст, где должно появиться стилизованное меню:
<li class="">
<a href="/pages/about">About</a>
</li>
<li class="active_page">
<a href="/pages/careers">Careers</a>
</li>
<li class="">
<a href="/pages/contact">Contact</a>
</li>
Этот код был бы великолепен, если бы он был в исходном коде; однако, источник, кажется, не распознает это ... вместо этого исходный код показывает следующий код:
<li class=""><a href="/pages/about">About</a></li><li class="active_page"><a href="/pages/careers">Careers</a></li><li class=""><a href="/pages/contact">Contact</a></li>
Я подозреваю, что это может иметь какое-то отношение к интерпретации =top_menu
в HAML?