所以我想通了,这样做的方式,但有更简单的方式做到这一点? 我想要做的只是,如果在PARAMS%,此前添加的.class个标签[:排序] == 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
你有没有试过这样的解决方案:
%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两个空间的问题 。
你也可以这样来做:
应用程序/佣工/ some_helper.rb
def hilite
params[:sort] == 'sortBy' ? { class: 'hilite' } : {}
end
应用/视图/ some.html.haml
%tr
%th{ hilite }
= link_to "Movie Title", movies_path(:sort => 'title'), :id => "title_header"
%th Rating
我用这个方法做一个span_field_opts帮手,通过自举类模仿无效字段:
def span_field_opts
{ class: "form-control cursor-none", disabled: true }
end
参考: https://coderwall.com/p/_jiytg/conditional-html-tag-attribute-in-haml