canvasで描いた絵のURLをDBに保存する
概要
私は9月ごろから独学でRuby on Railsを始めたのですが、題名の通りcanvasで描いた絵をURLに変換してDBに保存する際に数日詰まったので自分への戒めのために今回の記事を書く運びとなりました。
詰まったところ
ArgumentError (When assigning attributes, you must pass a hash as an argument.):
ArgumentError (When assigning attributes, you must pass a hash as an argument.):
ハッシュにしてから受け渡してください的なエラーが出る。
受け渡したデータ
JavaScriptでcanvasのデータをURL化しているため、そのままJavaScriptでPOSTしました。
こんなかんじ
//変数imageにはcanvasのURLが入っています
function send_url(image){
var form = document.createElement('form');
var request = document.createElement('input');
form.method = 'POST';
form.action = 'save';
request.type = 'hidden';
request.name = 'text';
request.value = image;
form.appendChild(request);
document.body.appendChild(form);
form.submit();
}
受け取り側はこのようになっています
private
def post_params
params.require(:text)
end
end
この形式で受け取るとpost_paramsは送信されてきた文字列だけをデータに持ちます。
修正後
先ほどの関数post_paramsを次のように書き換えました
def post_params
img = params.require(:text)
hash_url = {"image_url" => img}
return hash_url
end
力技です。
最後に
セキュリティなどの観点で見てこれが大丈夫なやり方なのかはわかりませんが、とりあえずこのハッシュにしたデータを渡すことで無事URLをDBに渡すことができました。
Author And Source
この問題について(canvasで描いた絵のURLをDBに保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/surai_uni/items/f9e8a26558d87738e47e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .