Nie rozumiem, jak Twitter Bootstrap robi aktywne linki do nawigacji. Jeśli mam regularną nawigację taką jak ta (z linkowaniem ruby na szynach):
<ul class="nav">
<li class="active"> <a href="/link">Link</a> </li>
<li class=""> <a href="/link">Link</a> </li>
<li class=""> <a href="/link">Link</a> </li>
</ul>
Jak zachować aktywność na podstawie klikniętego linku?
ruby-on-rails
twitter-bootstrap
LearningRoR
źródło
źródło
Odpowiedzi:
Właśnie odpowiedziałem na to samo pytanie tutaj Twitter Bootstrap Pills with Rails 3.2.2
źródło
%li{:class => "#{'active' if current_page?(root_path)}"}=link_to "Home", root_path
controller_name
iaction_name
zamiast uzyskiwać do nich dostęp z hasha params.Możesz użyć czegoś takiego (bardzo podobnego do tego, o czym wspomniał @phil, ale trochę krócej):
źródło
'active' if params[:controller] == 'controller1'
user_*_path
w<%= 'active' if current_page?(root_path) %>
?https://github.com/twg/active_link_to
#=> <li class="active"><a href="https://stackoverflow.com/users">Users</a></li>
źródło
Użyłem helpera, aby zaimplementować to w stylu helperów formularzy.
W pomocniku (np.
app/helpers/ApplicationHelper.rb
):Następnie w widoku (np.
app/views/layouts/application.html.erb
):W tym przykładzie (na stronie „użytkownicy”):
źródło
Użyj tego zamiast tego, aby wybrać aktywny link w nawigacji na podstawie bieżącej trasy bez kodu serwera:
źródło
$('li.active').closest('.dropdown').addClass('active');
do podświetlenia menu nadrzędnego.Odniosłem sukces, używając logiki i (
&&
) w haml :źródło
Dla każdego linku:
lub nawet
źródło
Nie jestem pewien, czy pytasz o to, w jaki sposób używany jest css bootstrap z Twittera, czy o stronę szyn. Zakładam od strony torów.
jeśli tak, sprawdź
#link_to_if
metodę lub#link_to_unless_current
metodęźródło
Dzisiaj miałem to samo pytanie / problem, ale z innym podejściem do rozwiązania. Tworzę funkcję pomocniczą w application_helper.rb:
a link wygląda tak:
Można wymienić
params[:action]
zparams[:controller]
i ustawić nazwę kontrolera w linku.źródło
Używam tego dla każdego
li
:<li><%= link_to_unless_current('Home', root_path) { link_to('Home', root_path, class: 'active') } %></li>
źródło
li
niea
Możesz zdefiniować metodę pomocniczą w
application_helper.rb
Teraz możesz użyć:
create_link 'xyz', any_path
który renderowałby się jakoMam nadzieję, że to pomoże!
źródło
Powinieneś to zrobić samodzielnie, manipulując klasami CSS. Oznacza to, że jeśli użytkownik kliknie łącze, zrób coś (działanie docelowe), ustaw poprzedni link jako nieaktywny, a nowy jako aktywny.
Jeśli twoje łącza prowadzą do serwera (to znaczy przeładowują stronę), możesz po prostu poprawnie renderować aktywne łącze na serwerze. W przeciwnym razie, jeśli robisz coś po stronie klienta (przełączanie paneli kart lub cokolwiek innego), musisz użyć javascript.
źródło
możesz użyć tabelarycznego dla linków
artykuł tutaj o tym, jak połączyć tabulous z bootstrapem na Twitterze i railsami 3.x
źródło
Napisałem prostą metodę pomocnika przy użyciu pomocnika wbudowanego w widoku,
current_page?
kiedy można określić niestandardowąclass
nazwę whtml_options
hashu.Przykłady (gdy jesteś na
root_path
trasie):źródło
Wiele odpowiedzi tutaj zawiera rzeczy, które będą działać lub odpowiedzi częściowe. Połączyłem kilka rzeczy, aby stworzyć tę pomocniczą metodę railsów, której używam:
Można to uczynić jeszcze bardziej wyszukanym dzięki sprawdzaniu argumentów w celu obsługi
&block
linku_to itp.źródło
Wiele odpowiedzi już jest, ale oto co napisałem, aby ikony Bootstrap działały z aktywnym linkiem. Mam nadzieję, że to komuś pomoże
Ten pomocnik da ci:
Umieść to w swoim pliku application_helper.rb
I użyj linku:
Ostatni argument jest opcjonalny - doda ikonę do linku. Użyj nazw ikon glifów. Jeśli chcesz ikonę bez tekstu:
źródło
Podstawowy, bez pomocnika
Używam tego, ponieważ mam więcej niż jedną klasę -
źródło
Oto co zrobiłem:
Utworzyłem ViewsHelper i zawarłem w ApplicationController:
Inside ViewsHelper stworzyłem prostą metodę, taką jak ta:
Moim zdaniem robię to:
źródło
Brzmisz, jakbyś potrzebował wdrożyć system nawigacji. Jeśli jest złożony, może stać się dość brzydki i dość szybki.
W takim przypadku możesz chcieć użyć wtyczki, która sobie z tym poradzi. Możesz użyć nawigacji navigasmic lub prostej (polecam navigasmic, ponieważ utrzymuje główną warstwę w widoku, gdzie należy, a nie w jakiejś konfiguracji)
źródło
Najkrótszy kod
Dotyczy to ZARÓWNO elementów nawigacyjnych, jak i podrzędnych list nawigacyjnych. Możesz przekazać tablicę jedną ścieżką i poradzi sobie z obydwoma.
application_helper
widok (html.erb)
źródło
Używanie Ruby na Sinatrze ..
Używam gołego motywu bootstrap, oto przykładowy kod paska nawigacyjnego. Zwróć uwagę na nazwę klasy elementu -> .nav - tak jak jest to określane w skrypcie java.
na stronie widoku (lub częściowo) dodaj to: javascript, to musi być wykonywane za każdym razem, gdy strona się ładuje.
fragment widoku haml ->
W debugerze javascript upewnij się, że wartość atrybutu „href” odpowiada parametrowi window.location.pathname. Jest to nieco inne rozwiązanie niż rozwiązanie @Zitrax, które pomogło mi naprawić mój problem.
źródło
szczupły
źródło