LoginSignup
5
4

More than 5 years have passed since last update.

RailsでHTML5のCanvasの画像をDBに保存する方法

Last updated at Posted at 2015-06-02

RailsでHTML5のCanvasの画像をDBに保存する方法

お絵かきサイトもどきを作ろうと思い、調べてみました。

Form側

new.html.erb
<canvas id="draw-area" width="257" height="257"></canvas>
<%= form_for @picture do |f| %>
    <%= f.text_field :name %><br>
    <%= f.file_field :photo %>
    <%= f.hidden_field :image_url, :value => '' %>
<% end %>
<span id="save-button">保存</span>

pictureモデルを用意し、hiddenフィールドでimage_urlフィールドを用意する。
(nameやphotoは無くても良いかも)

CoffeeScript側

pictures.coffee
  canvas = $('#draw-area')

  #お絵かき処理は省略・・・

  #保存ボタン押下時にhiddenフィールドに画像のURLを持たせ、Postアクションを呼ぶ
  $("#save-button").click ->
    url = canvas[0].toDataURL()
    $("#picture_image_url").val(url)
    $("#new_picture").submit()

Controller側

pictures_controller.rb
  def create
    @picture = Picture.new(picture_params)
    @picture.image_url = params['picture']['image_url']
    if @picture.save
      redirect_to @picture, notice: '保存しました。'
    else
      render :new
    end
  end

  def picture_params
    params.require(:picture).permit(:name, :photo, :image_url)
  end

簡単ですが、上記の方法で出来ました。
他にも色々方法があると思います。
DBにはバイナリで登録されているので、
実際に表示する場合はまた別途コンバートする必要あり。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4