嵌套的content_tags仅显示最后一个chilldren rails视图助手

时间:2011-10-03 04:27:25

标签: ruby-on-rails ruby view

我正在尝试使用内容标记插入一些描述的页面

def spec_description(name, overview, detail)
  content_tag :dl do
    content_tag :dt do
      content_tag(:strong, name)
    end
    content_tag :dd, overview, :class => "spec-overview"
    content_tag :dd, detail,   :class => "spec-detail" #only this dd tag gets output
  end
end

但实际上,只有带有'详细信息'的dd标签才会输出到html

已更新 输出html现在是这样的:

<dl>
   <dd>some detail from detail variable</dd>
</dl>

查看“概述”和“名称”dd标签是如何完全丢失的?更不用说他们的内容......

有谁知道为什么会这样,以及我如何解决它?

1 个答案:

答案 0 :(得分:7)

你的帮助器返回一些HTML,它的返回值是content_tag :dl返回的值。 <dl>的内容将是其块返回的内容,并且块返回最后一个值(即最后<dd>)。所以你只有一个返回值问题:

def spec_description(name, overview, detail)
  content_tag :dl do
    html  = content_tag :dt { content_tag(:strong, name) }
    html += content_tag :dd, overview, :class => "spec-overview"
    html += content_tag :dd, detail,   :class => "spec-detail"
    html
  end
end