Railsで画像をデータベースに登録し表示する。

提供: sha.ngri.la
2014年8月18日 (月) 14:07時点におけるTara.ttm (トーク | 投稿記録)による版
移動先: 案内検索

モデルなどの状況

mysql> describe images;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| filename   | varchar(255) | YES  |     | NULL    |                |
| memo       | text         | YES  |     | NULL    |                |
| photo      | mediumblob   | YES  |     | NULL    |                |
| created_at | datetime     | YES  |     | NULL    |                |
| updated_at | datetime     | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

photoに画像を登録します。

画像の登録

_form.html.erbを編集

  <div class="form-group">
    <%= f.label :photo %>
    <%= f.file_field :photo %>
  </div>

を追加しました。

images.controller.rbを編集

def create
    photo = image_params[:photo]
    image = {}
    if photo != nil
      image_params[:photo] = photo.read
    end

photo = imgae_params[:photo]以下5行を追加しました。

    def image_params
      params.require(:image).permit(:filename, :memo, :photo)
    end

def image_params:photoを追加しました。

画像の表示

routes.rbの編集

次の6行を追加。

  resources :images
  resources :images do
    member do
      get 'show_image'
    end
  end


Link