я новичок в рельсах и хотел бы помочь с реализацией динамического меню с использованием партиалов.
На данный момент мой код выглядит следующим образом:
частичное меню:
.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?