Как использовать оператор if в HAML для управления строкой класса тега? - PullRequest
3 голосов
/ 16 марта 2012

У меня есть условие, что если action_name содержит «index», то второй класс должен возвращать только «index», в противном случае установите для него action_name.

Я пытался что-то вроде этого:

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

К сожалению, у меня есть остаток моего тела в макете, который следует за ними, и он отображается только для предложения else.

Я полагаю, что здесь есть и более читаемый один вкладыш, который я мог бы использовать здесь, чтобы выполнить оператор if в строке против более многословного многострочного оператора if, но я мог бы использовать некоторую помощь здесь с точки зрения получения этогоработать как положено в HAML.

Ответы [ 3 ]

3 голосов
/ 16 марта 2012

Я бы положил метод в помощник.Мне нравится избегать логики.

application_helper.rb

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

view

%body{ :class => get_class action_name }
2 голосов
/ 16 марта 2012

Ну, вот один вкладыш:

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

Хотя это не так читаемо!

1 голос
/ 16 марта 2012
%body{:class => "#{controller_name} #{(action_name =~ /[index]/) ? 'index' : action_name}" }
...