2012-01-28 5 views
0

私はthis articleを見て、HAMLの部分で奇妙な動作をしています。 2つの異なるコントローラアクションにアクセスすると、1つのインスタンスが動作し、もう1つのインスタンスは失敗します。ここでは、コードです。 'randomController' をセクションまたはコントローラベースのRails 3.2でのハイライト表示

= link_to_unless_current(t('some.string', :en=>'SomeString'), '/url',{:class=>(controller.controller_name == 'randomController' ? 'current' : 'header-link')}) 

I出力= controller.controller_nameは、いずれかのビューでは、私が手メインのリスティングページ(すべてのオブジェクトにページが表示されている)では、クラスは適用されませんが、 '表示'ページに移動するとクラスが突然表示されます。コントローラーは両方とも同じです(どちらの場合も同じ文字列が表示されます)。なぜクラスが等しく適用されないのですか?

一般に、コントローラ名を確認するのではなく、現在のコントローラに基づいてリンクをスタイルする方が良いでしょうか? current_pageヘルパーはコントローラ+アクションの両方を必要とします。つまり、ここでは適切な候補ではありません。

+0

現在のページで実行されているlink_to_unless_currentにブロックを渡すことができます。ちょうど私が欲しかったクラスとのスパンを含めて、それは動作します! – clekstro

答えて

0

他の人が同じ問題を抱えている場合の回答としてマークします。うまくいけば、これは正しくフォーマット:これは明らかに繰り返し要素を削除するためにクリーンアップすることができ、そして私は、サイト上の任意のビュー内で使用できるように、おそらくdraperを使用して、アプリケーションのデコレータとして終わるだろう

 = link_to_unless_current(t('some.string', :en=>'SomeString'), '/url',{:class=>(controller.controller_name == 'randomController' ? 'current' : 'header-link')}) do 
     %span.current 
      = (t('some.string', :en=>'SomeString' 

関連する問題