所以我想出了一种方法,但有更简单的方法吗? 我想要做的只是在%th标签之后添加.class如果params [:sort] == sortBy,我真的需要在helper方法中使用其余的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
答案 0 :(得分:8)
您是否尝试过此解决方案:
%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
移至帮助程序。看看我的类似答案:haml two spaces issue。
答案 1 :(得分:2)
你也可以这样做:
def hilite
params[:sort] == 'sortBy' ? { class: 'hilite' } : {}
end
%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