content_tag和普通html标签的比较

时间:2014-01-25 16:58:51

标签: ruby-on-rails

任何人都可以在rails中描述content_tag的一些用例。我的意思是为什么我更喜欢它而不是简单的标签语法。比较content_tag(:div)over html div tags

2 个答案:

答案 0 :(得分:1)

根据我的经验,我倾向于在辅助方法中使用content_tag(在app/helpers中)。 content_tag往往很快就会变得笨拙(特别是在将它们嵌入w / blocks时),所以我只将它们用于更短的HTML帮助程序。

content_tag非常适合动态创建内容。例如,这里有一个辅助方法,用于生成无序列表w / items

  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

这允许您执行

之类的操作
ul ['first', 'second', 'third']

甚至传递阻止列表

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

在此使用辅助方法而不是原始HTML使得此代码更具可重用性(DRY)并且还允许灵活性。

答案 1 :(得分:1)

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

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