Добавление динамических атрибутов в тег HAML с использованием вспомогательного метода в rails

Итак, я нашел способ сделать это, но есть ли более простой способ сделать это? То, что я хочу сделать, это просто добавить .class после тега% th, если params [: sort] == sortBy, действительно ли мне нужно иметь остальную часть HAML в вспомогательном методе?

Это мой вспомогательный метод из моего файла helper.rb:

def yellow?(sortBy,name,id)
  haml_tag :th, class: "#{'hilite' if params[:sort]== sortBy}" do
    haml_concat link_to name, movies_path(sort: sortBy),{:id => id}
  end
end

Это из моего файла HAML:

%tr
  - yellow?("title","Movie Title","title_header")
  %th Rating

Ответы на вопрос(2)

app/helpers/some_helper.rb
def hilite
  params[:sort] == 'sortBy' ? { class: 'hilite' } : {}
end
app/views/some.html.haml
%tr
  %th{ hilite }
    = link_to "Movie Title", movies_path(:sort => 'title'), :id => "title_header"
  %th Rating

Я использовал этот подход для создания помощника span_field_opts, чтобы имитировать отключенное поле с помощью классов Bootstrap:

def span_field_opts
  { class: "form-control cursor-none", disabled: true }
end

Ссылка:https://coderwall.com/p/_jiytg/conditional-html-tag-attribute-in-haml

 08 июн. 2016 г., 13:33
Это так же, как я хочу. Поблагодарить!
Решение Вопроса

%tr
  %th{ :class => if params[:sort] == 'sortBy' then 'hilite' end }
    = link_to "Movie Title", movies_path(:sort => 'title'), :id => "title_header"
  %th Rating

Вы можете переместить это утверждение:if params[:sort] == 'sortBy' then 'hilite' end помощнику. Посмотрите на мой аналогичный ответ:хамл два пробела.

 Pål06 июн. 2012 г., 19:46
Спасибо, это было лучшее решение!

Ваш ответ на вопрос