【问题标题】:Wrapping HTML tags using Yield with Ruby使用 Yield 和 Ruby 包装 HTML 标签
【发布时间】: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

    "
  • 不要把它放在评论中,编辑你的问题,这样它就不会丢失。
  • 已编辑!感谢您的警告!
  • 现在只需再次添加您的预期输出,以便人们知道您真正想要什么;)

标签: arrays ruby yield


【解决方案1】:

问题不在于yield 似乎工作正常,而在于属性参数。或者更确切地说,将参数插入到字符串中。

目前你正在做一个隐含的Array.to_s,这就是括号的来源。如果您确定属性字符串是正确的,您可以执行简单的...#{attributes.join} ... 将所有元素连接到正确的字符串(前提是 HTML 语法正确等等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 2021-04-29
    • 1970-01-01
    • 2016-06-14
    相关资源
    最近更新 更多