我正在构建一个Rails应用,用户可以在其中输入关于自己的六个单词并上传图像。我想在图像上附加这六个词。
我知道如何使用“静态”文本来添加文本,但我不知道如何将文本字段链接到用户输入六个单词时填写的表单。
现在,“文字”是静态的,无论我放置什么。
我想知道为什么下面的方法不起作用?
process :textify => <%= @user.sixwords %>
这是我所拥有的:
process :textify => 'Text'
def textify(phrase)
manipulate! do |img|
img = img.sepiatone
title = Magick::Draw.new
title.annotate(img, 0,0,0,40, phrase) {
self.font_family = 'Helvetica'
self.fill = 'white'
self.pointsize = 32
}
img = img.write('newimg.gif')
end
end
感谢您帮助我减少n00b的使用! :)
最佳答案
在朋友的帮助下解决了这个问题。
这就是我需要更改的所有内容:
title.annotate(img, 0,0,0,40, model.name) {
self.font_family = 'Helvetica'
self.fill = 'white'
self.pointsize = 32
}
之所以有效,是因为Carrierwave使用
model
作为变量,该变量指向上传者附加到的任何实例对象。在我的模型中,name
是接受用户文本输入的表单字段的名称。对于其他用例,只需将
model.field_name
放在您为field_name
指定的任何名称上。我的朋友是这样写的,向我解释。我将其粘贴在这里,以防它可以帮助其他人。
ImageUploader中的'process'方法是静态类方法,
仅在文件加载到内存中时调用一次,并且
由红宝石解释。基本上只是内部跟踪
以后应为每个实例调用哪种处理方法
ImageUploader。 textify方法是获取的实例方法
在创建的每个ImageUploader对象实例上调用。的
您在运动员模型中调用的“ mount_uploader”类方法是
做一些红宝石魔术来实例化ImageUploader实例,并
将运动员实例对象传递给它,使其可供
ImageUploader对象实例作为称为“模型”的实例方法。