例如,我有一个文本块,其中包含字符串“{image = filename.jpg}”的几个实例,其中filename.jpg可以是任何文件名,我想用{}替换所有内容通过使用文件名找到图像的图像标签,例如Model.find_by_attachment_file_name( “filename.jpg”)。
是否可以这样做?
编辑:
示例输入:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
{image=some_file.png}
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
期望的输出:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<img src="/system/attachments/model/some_file.png">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
使用Model.find_by_model_attachment_file_name("some_file.png").model_attachment.url
就是这样:
string.gsub(/{image=.*}/, "<image src=#{ContentAttachment.find_by_content_image_file_name([???]).content_image.url(:main)}")
其中[???]被替换为用gsub替换的内容。
或者,如何在gsub的第二个参数中引用第一个参数?
答案 0 :(得分:4)
不是将第二个参数设置为gsub,而是将一个块附加到gsub上。
string.gsub(/\{image=(.*)\}/){
# $1 will be "some_file.png"
"<image src=#{ContentAttachment.find_by_content_image_file_name([$1]).content_image.url(:main)}"
}