我正在转换一些content_tag
像这样使用的旧代码:
wrap_tag = 'p'
....
content_tag(wrap_tag, class: 'etc') do
'some content'
end
这会产生预期的
<p class="etc">
Some content
</div>
我现在想更新以使用tag
语法,但我遇到了麻烦:
wrap_tag = 'p'
...
tag wrap_tag, class: 'etc' do
'some content'
end
尝试:
tag.wrap_tag
给"<wrap-tag>some content</wrap-tag>"
不出意外,只是下划线变成了连字符。
其他变体:
- 直接使用
tag.p
:<p>some content</p>
- 使用
tag.wrap_tag
:<wrap-tag>some content</wrap-tag>
- 使用
tag.wrap_tag.to_sym
:<wrap-tag></wrap-tag>
- 使用
tag wrap_tag
:<p />
- 使用
tag wrap_tag.to_sym
:<p />
注意:以上所有示例都包括do..content..end
最初显示的块。
有没有办法在变量中包含标签名称并包含内容?
谢谢
尝试使用jvillian的建议,send
我发现
wrap_tag = 'p'
content = 'some text'
helper.tag.send(wrap_tag, content)
返回“一些文本”,通常返回第二个和后续参数。
看起来,查看 actionview/helpers/tag_helper.rb,content_tag方法检查 block_given?而标签没有。
但是为什么yyyyyyyy(不是)我将不得不再次通读PR才能找到答案。