2012-03-16 19 views
3

私は、action_nameに "index"が含まれている場合、2番目のクラスは "index"のみを返し、そうでない場合はaction_nameに設定するという条件があります。HAMLのif文を使ってタグクラス文字列を制御する方法は?

私はこれらの線に沿って何かをしようとしていた。

- if action_name =~ /.*index.*/ 
    %body{ :class => "#{controller_name} index" } 
    - else 
    %body{ :class => "#{controller_name} #{action_name}" } 

は、残念ながら、私はこれらを次のレイアウトに私の体の残りの部分を持って、それだけelse句に表示されます。

私はここで、私がここで使うことができるより読みやすい1つのライナーがあると思います。これは、行内のifとより冗長な複数のif文を実行しますが、私はこのgettinについてHAMLの予想通りです。

答えて

2

さて、ここで1つのライナーです:しかしその読めない

%body{ :class => "#{controller_name} #{(action_name =~ /.*index.*/) ? 'index' : action_name}" } 

+0

ありがとう! :)完璧です。 – ylluminate

3

私はヘルパーにメソッドを配置します。私は私の意見から論理を守るのが好きです。

application_helper.rb

def get_class(name) 
    "#{controller_name} #{(name =~ /.*index.*/) ? 'index' : name}" 
end 

ビュー

%body{ :class => get_class action_name } 
+0

良いアイデア...私は明日余裕があるときにそれを調べます。ありがとう! – ylluminate

1
%body{:class => "#{controller_name} #{(action_name =~ /[index]/) ? 'index' : action_name}" }