Je ne comprends pas comment Twitter Bootstrap crée des liens actifs pour la navigation. Si j'ai une navigation régulière comme celle-ci (avec liaison rubis sur rails):
<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>
Comment le garder actif en fonction du lien sur lequel j'ai cliqué?
ruby-on-rails
twitter-bootstrap
LearningRoR
la source
la source
Réponses:
Je viens de répondre à la même question ici Twitter Bootstrap Pills with Rails 3.2.2
la source
%li{:class => "#{'active' if current_page?(root_path)}"}=link_to "Home", root_path
controller_name
et desaction_name
helpers au lieu d'y accéder à partir du hachage des paramètres.Vous pouvez utiliser quelque chose comme (très similaire à ce que @phil a mentionné, mais un peu plus court):
la source
'active' if params[:controller] == 'controller1'
user_*_path
dans<%= '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>
la source
J'ai utilisé un assistant pour implémenter cela dans le style des aides de formulaire de Rails.
Dans un assistant (par exemple
app/helpers/ApplicationHelper.rb
):Ensuite, dans une vue (par exemple
app/views/layouts/application.html.erb
):Cet exemple produit (sur la page 'utilisateurs'):
la source
Utilisez plutôt ceci pour sélectionner le lien actif dans la navigation en fonction de l'itinéraire actuel sans code serveur:
la source
$('li.active').closest('.dropdown').addClass('active');
pour mettre en évidence le menu parent également.J'ai trouvé le succès en utilisant le logique et (
&&
) dans haml :la source
Pour chaque lien:
ou même
la source
Je ne sais pas si vous demandez comment le css de bootstrap Twitter est utilisé, ou le côté des rails. Je suppose du côté des rails.
si c'est le cas, vérifiez la
#link_to_if
méthode ou la#link_to_unless_current
méthodela source
Aujourd'hui, j'ai eu la même question / problème mais avec une autre approche pour la solution. Je crée une fonction d'assistance dans application_helper.rb:
et le lien ressemble à ceci:
Vous pouvez remplacer
params[:action]
avecparams[:controller]
et configurer votre nom de contrôleur dans le lien.la source
J'utilise ceci pour chacun
li
:<li><%= link_to_unless_current('Home', root_path) { link_to('Home', root_path, class: 'active') } %></li>
la source
li
nona
Vous pouvez définir une méthode d'assistance dans
application_helper.rb
Maintenant, vous pouvez utiliser comme:
create_link 'xyz', any_path
qui rendrait commeJ'espère que ça aide!
la source
Vous devriez le faire vous-même en manipulant les classes CSS. Autrement dit, si un utilisateur clique sur un lien, faites quelque chose (action cible), définissez le lien précédent inactif et le nouveau lien actif.
Si vos liens vous amènent au serveur (c'est-à-dire, rechargez la page), vous pouvez simplement rendre le lien actif correctement sur le serveur. Sinon, si vous faites des choses côté client (changer de volet d'onglets ou autre), vous devez utiliser javascript.
la source
vous pouvez utiliser tabulous pour les liens
article ici sur comment combiner tabulous avec twitter bootstrap et rails 3.x
la source
J'ai écrit une méthode d'assistance simple en utilisant l'assistant de construction dans la vue
current_page?
lorsque vous pouvez spécifier unclass
nom personnalisé dans lehtml_options
hachage.Exemples (lorsque vous êtes en
root_path
route):la source
Beaucoup de réponses ici ont des choses qui fonctionneront ou des réponses partielles. J'ai combiné un tas de choses pour créer cette méthode d'aide aux rails que j'utilise:
Cela pourrait être rendu encore plus sophistiqué avec la vérification des arguments à prendre en charge
&block
sur le link_to, etc.la source
Beaucoup de réponses déjà, mais voici ce que j'ai écrit pour que les icônes Bootstrap fonctionnent avec un lien actif. J'espère que cela aidera quelqu'un
Cet assistant vous donnera:
Mettez ceci dans votre application_helper.rb
Et utilisez le lien:
Le dernier argument est facultatif - il ajoutera une icône au lien. Utilisez les noms des icônes de glyphe. Si vous voulez une icône sans texte:
la source
Voici ce que j'ai fait:
J'ai créé un ViewsHelper et inclus dans ApplicationController:
Dans ViewsHelper, j'ai créé une méthode simple comme celle-ci:
À mon avis, je fais ceci:
la source
Vous semblez devoir mettre en place un système de navigation. Si c'est complexe, cela peut devenir assez laid et assez rapide.
Dans ce cas, vous voudrez peut-être utiliser un plugin capable de gérer cela. Vous pouvez utiliser la navigation navigasmique ou simple (je recommanderais navigasmic car elle garde la couche principale dans une vue, à sa place, et non dans une configuration)
la source
Code le plus court
Cela concerne les deux éléments de la liste de navigation et de sous-navigation. Vous pouvez transmettre à un tableau un seul chemin et traiter les deux.
application_helper
vue (html.erb)
la source
Utilisation de ruby sur Sinatra.
J'utilise le thème nu bootstrap, voici l'exemple de code de la barre de navigation. Notez le nom de classe de l'élément -> .nav - car il est référencé dans le script java.
dans la page d'affichage (ou partielle), ajoutez ceci: javascript, cela doit être exécuté à chaque chargement de la page.
extrait de vue haml ->
Dans le débogueur javascript, assurez-vous que la valeur de l'attribut 'href' correspond à window.location.pathname. C'est légèrement différent de la solution de @Zitrax qui m'a aidé à résoudre mon problème.
la source
Basique, sans aide
J'utilise ceci depuis que j'ai plus d'une classe -
la source
svelte
la source