转义转义字符串中的字符串



所以我正在编写一个生成器。

我想让生成器创建"模型"名称。如

rails g my_custom_generator foo

rails g my_custom_generator bar

基于rails,我可以使用#{class_name}为所选名称创建一个模型。

{class_name}将根据您的选择变成foo或bar。

还和我在一起吗?伟大。 我的问题如下:

我想

生成一个编辑表单,并且我想在已经转义的字符串中填写模型名称。像这样:

f.input :name, value="#{@model.name}"

我上面的代码已经看起来像那样了。 我现在想为生成器翻译它,例如

f.input :name, value=#"{@#{class_name}.name}"

但这行不通。 有谁知道如何转义已经转义的字符串...? 这里采取什么方法。

请记住,您可以使用单引号来避免转义:

"#{@model.name}"
# => "Test"
'#{@model.name}'
# => "#{@model.name}"

因此,如果你打算将评估推迟一轮,你应该像那样逃避或使其成为更字面的版本:

"#{@#{class_name}.name}"

这可以评估两次,尽管我不确定它是否会完全按照发电机系统中的计划工作。你必须测试它。

各种来源(这个和这个)表明要生成的文件是由ERB处理的,因此在<%=%>之外的这些文件中使用Ruby的字符串插值是没有用的。

像这样拼接它:

f.input :name, value=#"{@<%= class_name %>.name}"

最新更新