#概要
私は9月ごろから独学でRuby on Railsを始めたのですが、題名の通りcanvasで描いた絵をURLに変換してDBに保存する際に数日詰まったので自分への戒めのために今回の記事を書く運びとなりました。
#詰まったところ
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に渡すことができました。