2014-01-25 50 views
2

任何人都可以在rails中描述content_tag的一些用例。我的意思是为什么我应该比简单的标签语法更喜欢它。通过html div标签比较content_tag(:div)content_tag和标准htm标签的比较

回答

1

根据我的经验,我倾向于在帮助器方法(app/helpers)内使用content_tagcontent_tag往往很难得到很快(尤其是当它们嵌套w /块),所以我只用它们来缩短HTML助手。

content_tag非常适合动态创建事物。例如,下面是/项目

def ul(items = [], attributes = {}, &block) 
    content_tag :ul, attributes do 
     yield(items) if block_given? 
     [*items].map { |i| content_tag :li, i }.join.html_safe 
    end 
    end 

产生无序列表W A辅助方法,这可以让你做的事情一样

ul ['first', 'second', 'third'] 

甚至通过阻止列表

ul do |l| 
    l << "first" 
    l << "second" 
    l << "third" 

使用一个辅助方法在这里而不是原始的HTML使得这个代码更加可重用(DRY),并且还允许灵活性。

1

当您想要动态生成HTML块时,标记助手很有用。例如,看到我写的关于生成Twitter Bootstrap面包屑的帖子:http://www.nicolasgarnil.me/blog/2012/neat-breadcrumbs-with-some-ruby-magic/

如果你正在编写静态标记,你应该坚持HTML标记。如果你不想包装逻辑来生成像面包屑,嵌套字段等html组件,使用标签助手。