Intereting Posts
Как вернуть правильное сообщение об ошибке / ошибке для JQuery .ajax () с помощью PHP? Как изменить скорость прокрутки по умолчанию, прокрутку, прокрутку веб-страницы Установка поля date in date устанавливает его за один день до Почему работает только JSfiddle? Регулировка и размер изображения для установки div (бутстрап) Как изменить динамические цвета текста ячейки tabe? Размер элемента на основе ширины монитора Как сделать текст отображаемым в прокрутке в html Как я могу сделать ширину 100% TextArea без переполнения, когда заполнение присутствует в CSS? Программно нажмите кнопку веб-страницы Скрыть конкретную загрузку div и затем показать div после щелчка Используйте Javascript для сканирования локального каталога, а затем обновите тег Anchor с помощью «последнего» файла Как обновить относительный тег img src до абсолютного пути с помощью javascript Удалить все стили и форматирование из гиперссылок Лучший способ хранения JSON в атрибуте HTML?

Динамическое меню rubyов на рельсах и частичное

я довольно новичок в рельсах и хотел бы помочь с реализацией динамического меню с использованием частичных.

На данный момент мой код выглядит следующим образом:

меню частично:

.three.columns %ul#nav %li{:class => @active_page=="about" ? "active_page" : ""} %a{:href => "..https://stackoverflow.com/pages/about"} About %li{:class => @active_page=="careers" ? "active_page" : ""} %a{:href => "..https://stackoverflow.com/pages/careers"} Careers %li{:class => @active_page=="contact" ? "active_page" : ""} %a{:href => "..https://stackoverflow.com/pages/contact"} Contact 

вид:

  html... = render :partial => 'shared/aboutmenu_nav' more html... 

справочник страниц:

 def @active_page(c) controller.action_name == c end 

Примечание: active_page – это class, который я бы хотел передать в li если пользователь находится на соответствующей странице. Например, если пользователь находится на странице контакта, class active_page будет передан только элементу Contact li.

Я пробовал несколько решений, включая создание нескольких версий CSS и передачу classа на body соответствующее странице? например,

 %body{:class => @page_name} 

и затем определяя @page_name в page_helper следующим образом:

  def page_name @path.parameterize('_') unless @path.blank? end 

Ни одна из этих версий не работает, поскольку первая (@active_page) не дает никаких результатов. Точно так же я не смог назначить class в теге body – когда я проверил исходный код, тег body не имел classов.

Я был бы признателен за любую помощь в том, как реализовать динамическое меню с помощью частичных. Если есть метод, который я не пробовал, не стесняйтесь сообщать мне. Я искренне ценю всю вашу помощь, и я очень благодарен за ваше время! Спасибо!

Используя решение Канадады. На странице буквально отображается следующий текст, в котором должно появиться меню стилей:

 
  • About
  • Careers
  • Contact
  • Этот код был бы замечательным, если бы он был в исходном коде; однако источник, похоже, не распознает его … вместо этого исходный код показывает следующий код:

      <li class=""><a href="https://stackoverflow.com/pages/about">About</a></li><li class="active_page"><a href="https://stackoverflow.com/pages/careers">Careers</a></li><li class=""><a href="https://stackoverflow.com/pages/contact">Contact</a></li> 

    Я подозреваю, что это может иметь какое-то отношение к пути =top_menu интерпретируется в HAML?

    Добавьте эти методы в helpers/appalication_helper.rb

     def active_menu?(path, path_right=request.path) (URI::parse(path).path == path_right) rescue false end def top_menu [ "About", "../pages/about", "Careers", "../pages/careers", "Contact", "../pages/contact" ].each_slice(2).map do |name, path| content_tag(:li, link_to(name, path), :class => (active_menu?(path) ? "active_page" : "")) end.join('').html_safe end 

    Теперь, на ваш взгляд,

     .three.columns %ul#nav = top_menu 

    Заметка:

    Используйте маршрутные помощники для пути вместо жесткого кодирования. Предполагая, что у вас есть controller под названием PagesController , вы можете переписать метод top_menu следующим образом:

     def top_menu [ "About", about_pages_path, "Careers", careers_pages_path, "Contact", contact_pages_path ].each_slice(2).map do |name, path| content_tag(:li, link_to(name, path), :class => (active_menu?(path) ? "active_page" : "")) end.join('').html_safe end