2009-09-02 7 views
5

oprócz tego, że standardy dostępności zniechęcają do korzystania z linku wskazującego aktualną stronę, jak mam refaktoryzować poniższy kod widoku?warunki refaktora w obrębie widoku 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 
    ... 

Dziękuję.

Odpowiedz

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

Doskonały! Dziękuję Ci! P.S .: Myślę, że mogę odrzucić ostatni powrót w funkcji, prawda? – user167267

+0

To prawda; Dodałem go dla symetrii z innym 'return' i podkreślam, że hash był tam jako wartość zwracana. –

0

Wygląda jak dobry przypadek dla częściowego dla mnie.

+0

Ludzie, komentarz, jeśli masz zamiar downvote. W przeciwnym razie nie dodajesz do dyskusji - jesteś tylko kutasem. – Chuck

+0

w rzeczywistości kod już składa się w częściowym, dziękuję – user167267

+0

Części mogą zdecydowanie pomóc tutaj, ale były dość niejasne. Pomocna byłaby sugestia co do tego, co wchodzi w skład części. –

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

dziękuję! Ternary opeator jest bardziej zwięzły, ale chciałbym uzyskać dla niego funkcję. – user167267