使用 Yield 和 Ruby 包装 HTML 标签
Posted
技术标签:
【中文标题】使用 Yield 和 Ruby 包装 HTML 标签【英文标题】:Wrapping HTML tags using Yield with Ruby 【发布时间】:2021-12-01 23:19:38 【问题描述】:这里是 Ruby 初学者。
我正在尝试了解 yield 以及如何将 html 标签包裹在它周围,但我一直遇到此代码的问题。
def tag (tag_name, attributes = nil)
"<#tag_name#attributes>#yield</#tag_name>"
end
style_tag = tag("div", ["class=", "red"]) do
tag("h1") do
"Google it"
end
end
我的输出是:
"<div[\"class=\", \"red\"]><h1>Google it</h1></div>"
谢谢
【问题讨论】:
您的示例和输出不匹配。 抱歉,这是一个之前的例子:输出是:"Google it
" 不要把它放在评论中,编辑你的问题,这样它就不会丢失。 已编辑!感谢您的警告! 现在只需再次添加您的预期输出,以便人们知道您真正想要什么;) 【参考方案1】:问题不在于yield
似乎工作正常,而在于属性参数。或者更确切地说,将参数插入到字符串中。
目前你正在做一个隐含的Array.to_s
,这就是括号的来源。如果您确定属性字符串是正确的,您可以执行简单的...#attributes.join ...
将所有元素连接到正确的字符串(前提是 HTML 语法正确等等)。
【讨论】:
以上是关于使用 Yield 和 Ruby 包装 HTML 标签的主要内容,如果未能解决你的问题,请参考以下文章
ruby 疑难点之—— yield 和 yield self
Ruby on Rails 如何使用 yield 进行布局?