* 사용 버전
ruby "3.1.3"
gem "rails", "~> 7.0.3", ">= 7.0.3.1"
* Carrierwave gem 설치하기
gem install carrierwave
* 프로젝트 Gemfile에 붙여넣어주기
gem 'carrierwave', '>= 3.0.0.beta', '< 4.0'
* scaffold 생성하기
rails generate scaffold Post name:string title:string content:text image:string
* uploader 생성하기
rails generate uploader post_image
* post 모델에 uploader 추가하기
class Post < ApplicationRecord
require 'carrierwave/orm/activerecord'
mount_uploaders :image, PostImageUploader
serialize :image, JSON
end
* _form.html.erb 파일에 업로드 버튼 만들기
<%= form.file_field :image, multiple: true, accept: "image/jpeg, image/jpg, image/gif, image/png" %>
* PostsController 수정하기
private
# Use callbacks to share common setup or constraints between actions.
def set_post
@post_id = Post.find(params[:id])
end
# Only allow a list of trusted parameters through.
def post_params
params.require(:post).permit(:name, :title, :content, {image: []})
end
파일올리기를 실행했을 때 db에 image column 부분
* 뷰파일 수정하기
- post에 가장 마지막에 저장된 이미지를 main에서 보여줄거기 때문에 MainController index에 입력
def index
last_img = Post.all.last
@imgvalue = {}
@imgvalue['size'] = last_img.image.size
@imgvalue['img_value'] = last_img.image
end
- main view에 src에 입력
<div><img class="slide-img" src="<%= @imgvalue['img_value'][0].url%>" alt="이미지"></div>
<div><img class="slide-img" src="<%= @imgvalue['img_value'][1].url%>" alt="이미지"></div>
<div><img class="slide-img" src="<%= @imgvalue['img_value'][2].url%>" alt="이미지"></div>
'Ruby on Rails' 카테고리의 다른 글
📚 [Ruby on Rails] 회원정보 수정 구현 ( f. 다음 주소 API ) (0) | 2023.04.06 |
---|---|
📚 [Ruby on Rails] 카카오 로그인 기능 구현 (카카오 로그인 - JS) (0) | 2023.04.06 |
📚 [Ruby on Rails] 라우트, 라우팅 설정 (0) | 2023.01.25 |
📚 [Ruby on Rails] 개발 폴더 생성, 컨트롤러 생성 - window, vscode (0) | 2023.01.20 |
댓글