Aktualizuję stary kod, aby był zgodny z ADA i muszę nadać każdemu <li> w nawigacji tabindex="0", aby były dostępne za pomocą klawiatury.

To jest kod, który generuje nawigację <li>. Nie został napisany przeze mnie i wiedziałem tylko, czym jest Arbre, ponieważ wskazał to starszy programista, ale żadne z nas nie jest pewne, jak dodać tabindex.

def nav_item_column_list(nav_item, row_number, column_number)
sub_item = nav_item.children.where(column_number: column_number).all[row_number]

if sub_item.present?
  Arbre::Context.new({:helper => self}) do
    ul do
      li do
        a sub_item.title, href: sub_item.url
        if sub_item.children.count > 0
          ul do
            sub_item.children.each do |child|
              li do
                a child.title, href: child.url
              end
            end
          end
        end
      end
    end
  end
end

Koniec

0
haste410 19 grudzień 2019, 17:53

1 odpowiedź

Chociaż dokumentacja jest zwarta, mówi

Atrybuty znaczników, w tym klasy id i HTML, są przekazywane jako parametr skrótu, a treść znacznika jest przekazywana jako blok

Więc myślę, że możesz napisać coś takiego

li tabindex: 0 do 

Więc przetestowałem to:

Arbre::Context.new { li tabindex: 0 }
=> <li tabindex="0"></li>
0
nathanvda 19 grudzień 2019, 22:20
Próbowałem tego i nie widzę dodawania tabindex.
 – 
haste410
19 grudzień 2019, 20:14
Ok, zainstalowałem gem i wypróbowałem go i afaik po prostu działa (edytowałem moją odpowiedź). Jak tego spróbowałeś?
 – 
nathanvda
19 grudzień 2019, 22:21
Zamieniłem li do na li tabindex: 0 do W edytowanej odpowiedzi, gdzie Arbre::Context.new { li tabindex: 0 } => <li tabindex="0"></li> znalazłby się w opublikowanym przeze mnie kodzie? Nigdy wcześniej nie korzystałem z Arbre i jest to jedyna część witryny, jaką widziałem, więc jestem bardzo zagubiony, jak to działa.
 – 
haste410
19 grudzień 2019, 23:39
Czy przeczytałeś dokumentację? Arbre::Context.new zajmuje blok, więc powinieneś zrobić dokładnie to samo. Czy wymieniłeś wszystkie wystąpienia li (ponieważ występuje wiele razy? Zgaduję, że najważniejszy jest najwyższy poziom? Jak sprawdziłeś, czy to zadziałało/nie działało? Czy możesz przetestować metodę i sprawdzić wyniki w rails console?Czy jest jakieś pokrycie testowe?
 – 
nathanvda
20 grudzień 2019, 13:47