Rails中的助手 – 构建html字符串时最好的方法是什么?

我通常会这样写助手:

def bloco_vazio (texto = "", btn = "", args={}) titulo = content_tag :h3, "Vazio!" p = content_tag :p, texto content_tag :div, (titulo + tag(:hr) + p + btn ), args end 

但我经常看到人们使用其他方法,如:

  def flash_notice html = "" unless flash.empty? flash.each do |f| html << "
" html << "×" html << f[:text].to_s html << "
" end end html end

要么

 def a_helper (some_text ="") %{ 

some title

#{some_text}

}% end

我过去使用了这两个持续时间并遇到了一些问题,然后开始使用content_tag和tag helpers,即使我仍然需要使用.html_safe方法。

有没有标准的方法来建立帮助者?

如果html超过1行,我通常将html放在部分中,并使用自定义帮助器方法调用它

视图

 <= display_my_html(@item, {html_class: "active"}) %> 

帮手

 def display_my_html(item, opts={}) name = item.name.upcase html_class = opts.key?(:html_class) ? opts[:html_class] : "normal" render "my_html", name: name, html_class: html_class end 

局部

 
<%= name %>

最好的方法是在helper中编写ruby代码,只在.html.erb文件上编写html,即使它们是“字符串”,所以你应该使用content_tag作为帮助者,如果你想要一个块,你可以使用:

 <%= content_tag :div, :class => "strong" do -%> Hello world! <% end -%> 

如果您的html很大,请考虑转移到部分,希望它能够澄清您的怀疑。

如果你想构建一个更长的“安全”html,推荐的方法是:

 html = "".html_safe html.safe_concat "Testing boldfaced char A" html 

实际上,您也可以并且应该在视图助手中使用局部视图。 在视图外部使用原始html标签是我尽可能避免的代码味道。

相关问题: Rails在帮助文件中查看助手