refileを使って複数画像アップロード
某プログラミングスクールにてポートフォリオ作成中。
忘れないようこちらに記載しておきます。
field(会場)はdeviseで作成しています。
https://qiita.com/japwork/items/dcca7ead2d3c334b124c
この記事だけではうまくできなかったため、メンターに質問してやっと解決できました。
4日ほどここでつまづいてました。。。
schema.rb
create_table "pictures", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "image_id"
t.integer "post_id"
end
create_table "posts", force: :cascade do |t|
t.integer "field_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
名前がややこしいですが。。
field(会場)がたくさんのpost(投稿)をできて、
postにはたくさんのpicture(写真)が入ってます。
routes.rb
Rails.application.routes.draw do
devise_for :fields, controllers: {
sessions: 'fields/sessions',
passwords: 'fields/passwords',
registrations: 'fields/registrations'
}
resources :fields
resources :posts, only: [:new, :create, :show] do
resources :pictures
end
end
post.rb
class Post < ApplicationRecord
has_many :pictures
belongs_to :filed, optional: true
accepts_attachments_for :pictures, attachment: :image
end
picture.rb
class Picture < ApplicationRecord
belongs_to :post
attachment :image
end
posts_conttoller.rb
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
@post.field_id = current_field.id
@post.save
redirect_to post_path(current_field)
@posts = Post.all
end
def show
@posts = Post.where(field_id: current_field.id)
end
private
def post_params
params.require(:post).permit(pictures_images: [])
end
end
posts/new.html.erb
<h2>Posts#new</h2>
<%= form_with model: @post, local: true do |f| %>
<%= f.hidden_field :field_id, :value => current_field.id %>
<%= f.attachment_field :pictures_images, multiple: true %>
<%= f.submit "投稿する" %>
<% end %>
posts/show.html.erb
<%= link_to "写真追加", new_post_path %><br>
<% if current_field.posts.present? %>
<% @posts.each do |post| %>
<% post.pictures.each do |picture| %>
<%= attachment_image_tag picture, :image, :fill, 100, 100, class: "mb-1" %>
<% end %>
<% end %>
<% else %>
投稿写真はありません。
<% end %>
コントローラーの途中で
puts "---"
pp @posts
puts "---"
と入力するとターミナルで中身の確認ができます。
Author And Source
この問題について(refileを使って複数画像アップロード), 我々は、より多くの情報をここで見つけました https://qiita.com/misahiro33/items/a767ceedb6a13b94aeb2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .