2009-09-02 6 views
5

アクセシビリティ規格が現在のページを指すリンク のリンクを妨げているということ以外に、私はどのように リファクタリングに次のビューコードを使用するのですか?リファクタリングの状況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 
    ... 

ありがとうございます。

答えて

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

優秀!ありがとうございました! P .:私は関数内の最後の戻り値を破棄できると思いますか? – user167267

+0

それは本当です。私はそれを他の 'return'との対称性のために加え、ハッシュが戻り値としてそこにあったことを強調しました。 –

0

私にとっては部分的なケースのように見えます。

+0

人、あなたはdownvoteするつもりならコメント。それ以外の場合は、ディスカッションに追加されていない - あなたはちょうつつされている。 – Chuck

+0

実際にコードはすでに部分的に配置されていますが、 – user167267

+0

部分的には間違いなく助けになるかもしれませんが、かなり曖昧でした。部分的に何が起こるかを正確に示唆するものが助けになります。 –

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

ありがとうございます!三項演算子はより簡潔ですが、私はそのための関数を得たいと考えています。 – user167267