所以我正在编写一个生成器。
我想让生成器创建"模型"名称。如
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}"