实施Thomas J Bradley的签名板Ruby on Rails Carrierwave

时间:2015-04-13 18:31:36

标签: ruby-on-rails-4 carrierwave signaturepad

我还不太擅长使用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 uploader gem?

谢谢!

1 个答案:

答案 0 :(得分: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

希望能帮助有同样问题的人。