4

我正在构建一个 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!:)

4

1 回答 1

4

在朋友的帮助下想通了。

这就是我需要改变的全部:

title.annotate(img, 0,0,0,40, model.name) {
    self.font_family = 'Helvetica'
    self.fill = 'white'
    self.pointsize = 32  
  }

这是有效的,因为 Carrierwavemodel用作指向上传器附加到的任何实例对象的变量。在我的模型中,name是接受用户文本输入的表单字段的名称。

对于其他用例,您只需将model.field_name您给field_name.

我的朋友这样写是为了向我解释。我将它粘贴在这里以防它可以帮助其他人。

ImageUploader 中的 'process' 方法是一个静态类方法,仅在文件加载到内存并由 ruby​​ 解释时才调用一次。它基本上只是在内部跟踪以后应该为每个 ImageUploader 实例调用哪些处理方法。textify 方法是在每个创建的 ImageUploader 对象实例上调用的实例方法。您在 Athlete 模型中调用的“mount_uploader”类方法正在执行一些 ruby​​ 魔术来实例化 ImageUploader 实例并将您的运动员实例对象传递给它,使其可作为名为“模型”的实例方法用于 ImageUploader 对象实例。

于 2012-10-02T19:21:15.233 回答