添加动态属性HAML标签使用辅助方法,在轨(Adding dynamic attributes to

2019-06-25 05:57发布

所以我想通了,这样做的方式,但有更简单的方式做到这一点? 我想要做的只是,如果在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

Answer 1:

你有没有试过这样的解决方案:

%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两个空间的问题 。



Answer 2:

你也可以这样来做:

应用程序/佣工/ 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



文章来源: Adding dynamic attributes to HAML tag using helper method in rails