我正在处理的项目需要在表下方的脚注中引用/定义一些数据表的列标题。
由于它是动态内容,将根据需要脚注的列标题的数量进行循环,因此我需要通过模型/助手处理其中的大部分内容。我已经能够复制我们的美国设计师想要使用的 html content_tag
,但 rubocop 抱怨内容标签的使用,并说我应该使用它tag
。但是我无法使用该tag
方法让 html 标签的嵌套工作。
我正在尝试生成的 html 部分是这样的(将在需要脚注时重复):
<li id="id" class="p-2">
<dl class="m-0"><dt class="d-inline">Unusual term: </dt>
<dd class="d-inline">Text with the definition of the term.<a href="#id-ref" aria-label="Back to content">↵</a></dd>
</dl>
</li>
生成它的content_tag
基础代码是这样的:
content_tag(:li,
content_tag(:dl, [
content_tag(:dt, 'Unusual term: ', class: "d-inline"),
content_tag(:dd, [
'Text with the definition of the term.',
content_tag(:a, '↵', href: '#id-ref', aria: { label: "Back to content" })
].join.html_safe, class: "d-inline")
].join.html_safe, class: "m-0"),
id: 'id',
class: "p-2")
当我切换到 usingtag
时,我遇到的问题是将两者都具有 content<dt>
的和<dd>
标签嵌套在标签内(以及同样具有内容的标签嵌套在上述标签内)。该方法似乎只输出最后一段嵌套内容,并忽略它之前的任何其他内容。<dl>
<a>
<dd>
tag
这是我尝试过的标记方法的嵌套:
tag.li id: 'id', class: 'p-2' do
tag.dl class: 'm-0' do
(tag.dt 'Unusual term: ', class: 'd-inline') +
(tag.dd 'Text with the definition of the term.', class: 'd-inline' do
(tag.a arrow, href: anchor, aria: { label: 'Back to content' })
end)
end
end
这就是它给我的输出。
<li id="id" class="p-2">
<dl class="m-0"><dt class="d-inline">Unusual term: </dt>
<dd class="d-inline"><a href="#id-ref" aria-label="Back to content">↵</a></dd>
</dl>
</li>
如您所见,它很接近,但缺少<dd>
标签的文本内容,该内容应该在<a>
标签开始之前输出。
任何人都可以帮忙吗?有没有办法在不丢失内容的情况下嵌套标签?或者我应该放弃并用写出的实际html代码写一个部分......?