Active Storageを使ってコミュニティサイトを作ろうと考えていますが、投稿をしたあとにページ遷移をすると、
エラーになってしまいます
エラーメッセージは以下のとうりです
class Post < ApplicationRecord has_many_attached :images belongs_to :user, optional: true end
そして、こちらがcontrolerです
以下、投稿のためのcontroller
こちらは、top.html.erbの部分に載せる投稿のためのcodeです
class PostsController < ApplicationController before_action :authenticate_user! before_action :find_post, only: [:edit, :update, :show, :destroy] def index @posts = Post.all end def new @post = Post.new end def edit @post = Post.find(post_params) end def create return redirect_to new_profile_path,alert: "プロフィールを登録してください" if current_user.profile.blank? @post = current_user @post = Post.create params.require(:post).permit(:content, images: []) if @post.save redirect_to root_path,notice:'投稿に成功しました' else redirect_to new_post_path,notice:'投稿に失敗しました' end end def update @post.update params.require(:post).permit(:content, images: []) end def destroy if @post.destroy redirect_to root_path,alert: '投稿を削除しました' else redirect_to root_path end end private def find_post @post = Post.find(params[:id]) end def force_redirect_unless_my_post return redirect_to root_path,alert:'権限がありません'if @post.user != current_user end end
こちらが新規投稿ページですね。
こちらは、部分テンプレートです。
<div class ='post-content'> <%= form_with model: @post, local: true do |f| %> <%= f.text_area :content, :placeholder => "いまどんなカンジ?"%> <%= f.file_field :images, multiple: true%> <div class = 'submit-block'> <%= f.submit '投稿する', class:"button"%> </div> <% end %> </div>
こちらが、新規投稿ページのの部分です
<div> <%= render 'form' %> </div>
こちらが、投稿一覧を表示するページですね。
top.hatml.er
<div class="content-wrapper"> <div class="content-block"> <% @posts.each do |post| %> <div class="content"> <div class="user-about"> <div class="image"> <%= image_tag 'user.JPG'%> </div> <div class="profile"> <div class="name-history"> <div class="name"> taka </div> <div class="mania-histry"> マニア歴:1年 </div> </div> <div class="enjoy-point"> 楽しいポイント: 自分の手で作ったものが動く様子が楽しい </div> </div> </div> <div class="text"> <p><%= post.content %></p> </div> <% if @post.images.attached? %> <div class = 'images'> <% @post.images.each do |image| %> <%= image_tag post.images %> </div> <% end %> <% end %> <div class="action-menu"> <div class="like"> </div> <div class="comment"> </div> </div> </div> <% end %> </div> <div class="sidebar"> <div class="box"> </div> <div class="box"> </div> </div> </div>
以下、投稿に関するmodelです
class Post < ApplicationRecord has_many_attached :images belongs_to :user, optional: true end
こちらが、userにかんするmodelです
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable has_many :posts has_one :profile, dependent: :destroy delegate :name, :mania_histry, :enjoy_point, :image, to: :profile end
#仮説
rails c
でpost.all
とやって投稿をconsole上で取り出してみようと思い、取り出してみたのですが、画像が、出て来なかったので、おそらくDB上に保存されていないのだと思います。
保存されているのは、と推測しています。
ただ、どうしたらいいのかはわからないです
もう一つが、
Active Storageを実装するにあたってgenereta resource
を実行すると調べたところの記事には書いてありました。その時僕は、そのコマンドを実行していませんでした、
それが原因なのかなと思っているんですけど、解決の糸口は見つけられていないです。
回答1件
あなたの回答
tips
プレビュー