No entiendo cómo Twitter Bootstrap hace enlaces activos para la navegación. Si tengo una navegación regular como esta (con ruby on rails enlazando):
<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>
¿Cómo lo mantengo activo en función del enlace en el que se hace clic?
ruby-on-rails
twitter-bootstrap
AprendizajeRoR
fuente
fuente
Respuestas:
Acabo de responder a la misma pregunta aquí Twitter Bootstrap Pills with Rails 3.2.2
fuente
%li{:class => "#{'active' if current_page?(root_path)}"}=link_to "Home", root_path
controller_name
yaction_name
helpers en lugar de acceder a ellos desde el hash de params.Puede usar algo como (muy similar a lo que mencionó @phil, pero un poco más corto):
fuente
'active' if params[:controller] == 'controller1'
user_*_path
en<%= '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>
fuente
Usé un ayudante para implementar esto al estilo de los ayudantes de formulario de Rails.
En un ayudante (p
app/helpers/ApplicationHelper.rb
. Ej. ):Luego, en una vista (por ejemplo
app/views/layouts/application.html.erb
):Este ejemplo produce (cuando está en la página de 'usuarios'):
fuente
Use esto en su lugar para seleccionar el enlace activo en la navegación según la ruta actual sin el código del servidor:
fuente
$('li.active').closest('.dropdown').addClass('active');
para resaltar el menú principal también.He tenido éxito usando la lógica y (
&&
) en haml :fuente
Para cada enlace:
o incluso
fuente
No estoy seguro de si está preguntando cómo se usa el CSS de arranque de Twitter o el lado de los rieles. Asumo el lado de los rieles.
si es así, consulte el
#link_to_if
método o el#link_to_unless_current
métodofuente
Hoy tuve la misma pregunta / problema pero con otro enfoque para la solución. Creo una función auxiliar en application_helper.rb:
y el enlace se ve así:
Se puede reemplazar
params[:action]
conparams[:controller]
y configurar el nombre del controlador en el enlace.fuente
Yo uso esto para cada uno
li
:<li><%= link_to_unless_current('Home', root_path) { link_to('Home', root_path, class: 'active') } %></li>
fuente
li
noa
Puede definir un método auxiliar en
application_helper.rb
Ahora puedes usar like:
create_link 'xyz', any_path
que se traduciría como¡Espero eso ayude!
fuente
Debería hacerlo usted mismo manipulando las clases CSS. Es decir, si un usuario hace clic en algún enlace, entonces haga algo (acción de destino), establezca el enlace anterior inactivo y el nuevo enlace activo.
Si sus enlaces lo llevan al servidor (es decir, hace que la página se recargue), entonces puede representar el enlace activo correctamente en el servidor. De lo contrario, si está haciendo algunas cosas del lado del cliente (cambiar paneles de pestañas o lo que sea), debe usar javascript.
fuente
podría usar tabulous para los enlaces
artículo aquí sobre cómo combinar tabulous con twitter bootstrap y rails 3.x
fuente
Escribí un método de ayuda simple usando build in view helper
current_page?
cuando puede especificar unclass
nombre personalizado enhtml_options
hash.Ejemplos (cuando está en
root_path
ruta):fuente
Muchas de las respuestas aquí tienen cosas que funcionarán o respuestas parciales. Combiné un montón de cosas para hacer este método auxiliar de rieles que uso:
Se podría hacer aún más elegante con la verificación de argumentos para admitir
&block
el enlace_a, etc.fuente
Ya hay muchas respuestas, pero esto es lo que escribí para que Bootstrap Icons funcione con un enlace activo. Espero que ayude a alguien
Este ayudante te dará:
Pon esto en tu application_helper.rb
Y usa el enlace:
El último argumento es opcional: agregará un icono al enlace. Utilice nombres de iconos de glifos. Si desea un icono sin texto:
fuente
Esto es lo que hice:
Creé un ViewsHelper y lo incluí en ApplicationController:
Dentro de ViewsHelper creé un método simple como este:
En mi opinión, hago esto:
fuente
Parece que necesita implementar un sistema de navegación. Si es complejo, puede volverse bastante feo y bastante rápido.
En este caso, es posible que desee utilizar un complemento que pueda manejar eso. Puede usar navigasmic o navegación simple (recomendaría navigasmic porque mantiene la capa principal en una vista, donde pertenece, y no en alguna configuración)
fuente
Código más corto
Se trata de los elementos de la lista de navegación secundaria y de navegación secundaria. Puede pasar una matriz a una sola ruta y se ocupará de ambos.
application_helper
ver (html.erb)
fuente
Usando ruby en Sinatra ..
Estoy usando el tema Bootstrap bare, aquí está el código de barra de navegación de muestra. Tenga en cuenta el nombre de clase del elemento -> .nav - ya que se hace referencia a esto en el script java.
en la página de vista (o parcial) agregue esto: javascript, esto debe ejecutarse cada vez que se carga la página.
fragmento de vista haml ->
En el depurador de JavaScript, asegúrese de que el valor del atributo 'href' coincida con window.location.pathname. Esto es ligeramente diferente a la solución de @Zitrax que me ayudó a solucionar mi problema.
fuente
Básico, sin ayuda
Yo uso esto porque tengo más de una clase -
fuente
Delgado
fuente