【发布时间】:2022-12-22 19:31:30
【问题描述】:
我有一个像这样的多行 HEREDOC:
c = <<-MYTEXT
{ 'Cache-Control' => "public, max-age=#{2.days.to_i}" }
MYTEXT
这引发了错误
undefined method `days' for 2:Integer (NoMethodError)
我不希望 Ruby 插入字符串并将 2 天的值写入整数,而是我希望它准确地写入字符串 #{2.days.to_i}
如果我逃避 # 和 \ 写它像
{ 'Cache-Control' => "public, max-age=\#\{2.days.to_i\}\" }
它有效,但想象一下带有许多 #{} 字符串插值的长文本,很难看。
这样做有什么更聪明的方法吗?
【问题讨论】:
-
“有效”——您对“有效”的定义是什么?这不会在字符串中插入值。
-
插值似乎工作得很好。问题是
2.days引发了 NoMethodError,即days方法未知。您可能忘记了提供此 extension 的require "active_support"。 (或者使用60*60*24*2或硬编码172800) -
我想我还没有足够清楚地解释我的意图。我不希望对字符串进行插值,我希望它完全按照 #{2.days.to_i}" 的形式编写。我正在更新问题以使其更精确。
-
是的,您根本没有对此进行解释(在第一个版本中)。这个问题字面意思是“如何使用字符串插值”。
标签: ruby