0

我还不太擅长rails,我正在尝试在表单末尾收集用户的签名。现在我的视图中显示的表单很好,但我真的不知道从哪里开始将其转换为图像。

在 Signature Pad 的文档中,它建议使用以下代码:

instructions = JSON.load(data).map { |h| "line #{h['mx']},#{h['my']} #{h['lx']},#{h['ly']}" } * ' '
system "convert -size 198x55 xc:transparent -stroke blue -draw '#{instructions}' signature.png"

但它没有任何关于在哪里/如何使用它的文档。

我把它放在我的创建函数中吗?我如何让它与carrierwave上传器gem一起使用?

谢谢!

4

1 回答 1

1

我实际上能够解决这个问题。这就是我所做的。

在控制器创建方法中,我在 @model.save 之前添加了这段代码

instructions = JSON.parse(params[:output]).map { |h| "line #{h['mx'].to_i},#{h['my'].to_i} #{h['lx'].to_i},#{h['ly'].to_i}" } * ' '
tempfile = Tempfile.new(["signature", '.png'])
Open3.popen3("convert -size 600x100 xc:transparent -stroke blue -draw @- #{tempfile.path}") do |input, output, error|
  input.puts instructions
end
@yourmodel.signature = tempfile

为此,您当然必须安装 Carrierwave gem,然后像这样设置上传器。在终端:

rails generate uploader Signature

在您要上传到的模型中:

mount_uploader :signature, SignatureUploader

希望对遇到同样问题的人有所帮助。

于 2015-04-14T18:31:00.590 回答