带引号内变量的Ruby格式字符串
如果我这样做 (注意第二个模板字符串中类周围的引号-这是两个Ruby代码块之间的唯一区别)。我如何让它工作?换句话说,我如何生成以下内容 class='btn提交按钮某些类' 我不相信我可以只使用插值,因为有时我需要传递其他变量。换句话说,我做不到带引号内变量的Ruby格式字符串,ruby,string,formatting,string-formatting,string-interpolation,Ruby,String,Formatting,String Formatting,String Interpolation,如果我这样做 (注意第二个模板字符串中类周围的引号-这是两个Ruby代码块之间的唯一区别)。我如何让它工作?换句话说,我如何生成以下内容 class='btn提交按钮某些类' 我不相信我可以只使用插值,因为有时我需要传递其他变量。换句话说,我做不到 ArgumentError: malformed format string - %' 因为有时我希望重用相同的字符串“模板”,但传入其他变量,以生成如下字符串: class='btn提交按钮其他类' 或 class='btn提交按钮某些第三类
ArgumentError:
malformed format string - %'
因为有时我希望重用相同的字符串“模板”,但传入其他变量,以生成如下字符串:
class='btn提交按钮其他类'
或
class='btn提交按钮某些第三类'
从:
格式(格式\字符串[,参数…])→ 字符串[…]
对于更复杂的格式,Ruby支持按名称引用<代码>%s样式使用格式样式,但
%{name}
样式不使用格式样式
文档不是很清楚,但是当您使用%
表单时,它希望看到%s
,其中名称
是散列键,s
是格式类型:s
表示字符串,d
表示数字。。。如果你说:
additional_classes = 'some-class'
"class='btn submit-button #{additional_classes}'"
从:
格式(格式\字符串[,参数…])→ 字符串[…]
对于更复杂的格式,Ruby支持按名称引用<代码>%s样式使用格式样式,但
%{name}
样式不使用格式样式
文档不是很清楚,但是当您使用%
表单时,它希望看到%s
,其中名称
是散列键,s
是格式类型:s
表示字符串,d
表示数字。。。如果你说:
additional_classes = 'some-class'
"class='btn submit-button #{additional_classes}'"
您的格式字符串缺少。字段类型说明符在格式字符串中是必需的 我不清楚为什么第一个示例没有引发错误,因为缺少必需的字段类型说明符。这可能是一个bug,或者我完全误读了文档 但是,我不清楚为什么你会考虑这个例子:
template_string = "class='btn submit-button %{additional_classes}'"
#--------------------------------------------^------------------^
由于格式字符串必须具有字段类型说明符,%
(字段名除外)后面的唯一字符是”
,因此将其解释为字段类型说明符。由于'
不是合法的字段类型,格式
会引发一个错误,它会明确告诉您它将'
解释为格式字符串的一部分
由于要格式化字符串,应使用s
(字符串)字段类型说明符:
ArgumentError: malformed format string - %'
↑
您的格式字符串缺少。字段类型说明符在格式字符串中是必需的 我不清楚为什么第一个示例没有引发错误,因为缺少必需的字段类型说明符。这可能是一个bug,或者我完全误读了文档 但是,我不清楚为什么你会考虑这个例子:
template_string = "class='btn submit-button %{additional_classes}'"
#--------------------------------------------^------------------^
由于格式字符串必须具有字段类型说明符,%
(字段名除外)后面的唯一字符是”
,因此将其解释为字段类型说明符。由于'
不是合法的字段类型,格式
会引发一个错误,它会明确告诉您它将'
解释为格式字符串的一部分
由于要格式化字符串,应使用s
(字符串)字段类型说明符:
ArgumentError: malformed format string - %'
↑
ArgumentError: malformed format string - %'
↑
template_string = "class=btn 'submit-button %<additional_classes>s'"
# ↑
format(template_string, additional_classes: 'some-class')
#=> "class=btn 'submit-button some-class'"
# ↑↑↑↑↑↑↑↑↑↑↑
template_string = "class=btn 'submit-button %{additional_classes}'"
# ↑ ↑
format(template_string, additional_classes: 'some-class')
#=> "class=btn 'submit-button some-class'"
# ↑↑↑↑↑↑↑↑↑↑↑