0

Rails はまだあまり得意ではなく、フォームの最後でユーザーの署名を集めようとしています。ビューにフォームが正常に表示されるようになりましたが、どこから画像に変換すればよいかわかりません。

署名パッドのドキュメントでは、次のコードを使用することが提案されています。

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

私は実際にこれをやり遂げることができました。これが私がしたことです。

コントローラーの create メソッドで、 @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 に答える