2009-09-02 12 views
5

además del hecho de que los estándares de accesibilidad desalientan el uso de un enlace que apunta a la página actual, ¿cómo se supone que debo refactorizar el siguiente código de vista?condiciones de refactorización dentro de la vista de haml

#navigation 
    %ul.tabbed 
    - if current_page?(new_profile_path) 
     %li{:class => "current_page_item"} 
     = link_to t("new_profile"), new_profile_path 
    - else 
     %li 
     = link_to t("new_profile"), new_profile_path 

    - if current_page?(profiles_path) 
     %li{:class => "current_page_item"} 
     = link_to t("profiles"), profiles_path 
    - else 
     %li 
     = link_to t("profiles"), profiles_path 
    ... 

Gracias.

Respuesta

8
# helpers 
def current_page_class(page) 
    return :class => "current_page_item" if current_page?(page) 
    return {} 
end 

-# Haml 
#navigation 
    %ul.tabbed 
    %li{current_page_class(new_profile_path)} 
     = link_to t("new_profile"), new_profile_path 
    %li{current_page_class(profiles_path)} 
     = link_to t("profiles"), profiles_path 
    ... 
+0

¡Excelente! ¡Gracias! P.S .: Creo que puedo descartar la última devolución en la función, ¿no? – user167267

+0

Eso es verdad; Lo agregué por simetría con el otro 'return' y para enfatizar que el hash estaba allí como un valor de retorno. –

0

Parece un buen caso para un parcial para mí.

+0

personas, comentario si van a downvote. De lo contrario, no estás agregando nada a la discusión: solo estás siendo un idiota. – Chuck

+0

en realidad el código ya se encuentra en un parcial, gracias – user167267

+0

Los parciales definitivamente podrían ayudar aquí, pero usted fue bastante vago. Una sugerencia sobre qué incluiría exactamente en el parcial ayudaría. –

2
#navigation 
    %ul.tabbed 
    %li{:class => current_page?(new_profile_path) ? "current_page_item" :nil } 
     = link_to t("new_profile"), new_profile_path 
    %li{:class => current_page?(profiles_path) ? "current_page_item" :nil } 
     = link_to t("profiles"), profiles_path 
    ... 
+0

¡gracias! Operador ternario es más conciso, pero me gustaría obtener una función para eso. – user167267

Cuestiones relacionadas