我正在构建一个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! :)
答案 0 :(得分:4)
在朋友的帮助下计算出来。
这就是我需要改变的全部内容:
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'类方法是 做一些ruby魔术来实例化ImageUploader实例和 将你的运动员实例对象传递给它,让它可用于 ImageUploader对象实例作为名为“model”的实例方法。