Javascript 保存之前,请不要运行rails 4
将签名板的JSON转换为回形针图像轨道 您好,这是rails 4应用程序,您可以在表单上签名并保存img。Im使用signaturePad.js进行此Im,然后将其转换为img。 我得到的sig表工作,它过去的数据,但得到错误的回形针Javascript 保存之前,请不要运行rails 4,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,将签名板的JSON转换为回形针图像轨道 您好,这是rails 4应用程序,您可以在表单上签名并保存img。Im使用signaturePad.js进行此Im,然后将其转换为img。 我得到的sig表工作,它过去的数据,但得到错误的回形针 Paperclip::AdapterRegistry::NoHandlerError No handler found for "[{\"lx\":157,\"ly\":81,\"mx\":157,\"my\":80},{\"lx\":157,\"ly\":7
Paperclip::AdapterRegistry::NoHandlerError
No handler found for "[{\"lx\":157,\"ly\":81,\"mx\":157,\"my\":80},{\"lx\":157,\"ly\":79,\"mx\":157,\"my\":81},{\"lx\":158,\"ly\":79,\"mx\":157,\"my\":79},{\"lx\":158,\"ly\":77,\"mx\":158,\"my\":79},{\"lx\":159,\"ly\":76,\"mx\":158,\"my\":77},{\"lx\":164,\"ly\":70,\"mx\":159,\"my\":76},{\"lx\":169,\"ly\":66,\"mx\":164,\"my\":70},{\"lx\":171,\"ly\":64,\"mx\":169,\"my\":66},{\"lx\":171,\"ly\":63,\"mx\":171,\"my\":64},{\"lx\":171,\"ly\":64,\"mx\":171,\"my\":63},
由于某种原因,没有运行回调来生成png
.
我用谷歌搜索了几个月,没有任何帮助。非常感谢。
这是一个多么大的挑战啊
签名Pad.rb
before_save :generate_image
has_attached_file :image # options ...
private
def signature_present
if signature.size <= 2
errors.add(:signature, :blank)
end
end
def generate_image
instructions = JSON.parse(signature).map { |h| "line #{h['mx'].to_i},#{h['my'].to_i} #{h['lx'].to_i},#{h['ly'].to_i}" } * ' '
image = StringIO.new
Open3.popen3("convert -size #{WIDTH}x#{HEIGHT} xc:transparent -stroke blue -draw @- PNG:-") do |input, output, error|
input.puts instructions
input.close
image.puts(output.read)
end
self.image = image
end
end
回形针可能是在调用before_save之前尝试处理它。也许可以在验证前让它与一个。否则,您可以将该代码重构为一个单独的类,并在将参数从请求传递到模型时在控制器中执行该操作。before\u验证不起作用。你能给我举个例子说明如何为控制器重构它吗。如果可以的话。我对这一点一无所知,可以让它工作。ThanksI在想你可能需要改变方法,但也许不行。在控制器中尝试一下,创建如下操作:
<%= form_tag({:controller => "sigPad", :action => "signature", }, :method => "post", :class => "sigPad") do %>
<a href="#draw-it">Firma</a>
<a href="#clear">Borrar</a>
<div class="sig sigWrapper">
<div class="typed"></div>
<canvas class="pad" width="390" height="110"></canvas>
<input id:"signature" type="hidden" name="signature" class="output" value="output">
</div>
<%= submit_tag("Guardar") %>
<%end%>
$(function() {
$('.sigPad')
.signaturePad({
drawOnly: true,
validateFields: false,
lineTop:80
})
});