[Rails] 이미지에 대한 여러 개의 투고
입문
이번에 처음으로 설치된 여러 개의 이미지 투고 기능에 대해 자신의 비망록으로 앞으로 설치될 초보자의 참고가 되기를 바랍니다.
(보도 참조)
・refile 기본 및 여러 이미지 업로드
https://qiita.com/nekosuke_/items/501e7ba1b286c51c1be9
개발 환경
ruby 2.6.3
Rails 5.2.4.4
샘플(투고를 위해 업로드된 이미지)
※ 그림 자체에 배경이 없어 이해하기 어려울 수 있습니다.미안합니다.
이번에 사용된 모델
입소문 사이트처럼 점포 정보를 게재하는 것을 목적으로 모델은 샵, Shop Image(그 점포의 복수 초상화를 높이는 것)로 설치되어 있다.
또 점포 정보의 열은 최소한으로 생략된다.
모델 이름
열명
Shop
id
name
caption
모델 이름
열명
Shop_image
id
shop_id
image_id
설치gem
※ refile: 응용 프로그램에 대한 파일 업로드 라이브러리입니다.
※refile-mini_magick: 그림 크기를 조정하는 데 사용됩니다.
Gemfile.
gem "refile", require: "refile/rails", github: 'manfe/refile'
gem "refile-mini_magick"
terminal.$ bundle install
모델 생성하기
여러 이미지에 새 모델을 생성하여 마이그레이션에 반영합니다.
terminal.
$ rails g model Shop name:string caption:text
$ rails g model ShopImage shop_id:integer image_id:string
$ rails db:migrate
db/schema.rbActiveRecord::Schema.define(version: 2021_02_16_101010) do
create_table "shops", force: :cascade do |t|
t.string "name", null: false
t.string "caption", null: false
end
create_table "shop_images", force: :cascade do |t|
t.integer "shop_id", null: false
t.string "image_id", null: false
end
end
모델 파일 편집
models/shop.rb
class Shop < ApplicationRecord
has_many :post_images, dependent: :destroy
accepts_attachments_for :post_images, attachment: :image
end
models/shop_image.rbclass Post < ApplicationRecord
belongs_to :shop
end
컨트롤러 설정
private 아래 매개 변수에 대한 설명에서 여러 이미지의 정보,shop_images_images:[].여러 이미지를 게시할 때는 배열로 전달해야 합니다.→ []
shop.contorller.rb
def index
@shop = Shop.all
end
def new
@shop = Shop.new
end
def create
@shop = Shop.new(shop_params)
@shop.save
end
private
def shop_params
params.require(:shop).permit(:name, :caption, shop_images_images: [])
end
보기 만들기
점포 정보를 추가하는 입력표 화면.
여러 이미지의 게시물에 대해 "multiple:true"라는 설명을 추가해야 합니다.
shops/new.html.erb
<%= form_with model: @shop, url: shops_path, local: true do |f| %>
<%= f.label :"店舗名"%>
<%= f.text_field :name %>
<%= f.label :"店舗画像"%>
<%= f.attachment_field :shop_images_images, multiple: true %>
<%= f.label :"紹介文"%>
<%= f.text_area :caption %>
<% end %>
아까도 보충에 기재한 바와 같이 여러 개의 이미지를 배열로 얻어야 하기 때문에 each문에서 모든 점포에서 한 개의 점포 정보를 얻은 다음에 한 개의 점포 정보와 관련된 여러 개의 이미지를 each문으로 배열하여 얻는다.shops/index.html.erb
<% @shops.each do |shop| %>
<%= shop.name %>
<%= shop.caption %>
<% @shop.shop_images.each do |shop_image| %>
<%= attachment_image_tag shop_image, :image, size: "130x130" %>
<% end %>
<% end %>
이 순서에 따라 방금 견본처럼 많이 투고할 수 있다!끝내다
이번에는 여기까지 하겠습니다.
나 자신도 프로그래밍 초보자이니 같은 입장의 사람에게 참고를 좀 해주면 좋겠다.
또한 내용에 오류가 있으면 지적해 주시기 바랍니다.
Reference
이 문제에 관하여([Rails] 이미지에 대한 여러 개의 투고), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/__Wata16__/items/1c631471f5b97462348c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)