プログラミング初心者です。
Railsでアプリを作成していますが、以下のようなエラーが出てしまい進めずにいます。
インスタのようなアプリで、新規画像が投稿できたら、画像はDBに保存→画像一覧ページ(top_path)に戻るようにしたいのですが、止まっています。
お力を貸してください。
class PostsController < ApplicationController # # アクション処理に入る前に認証 before_action :authorize # 新規投稿ページ def new @post = Post.new end # 投稿処理 def create @post = Post.new(post_params) upload_file = params[:post][:upload_file] # 投稿画像がない場合 if upload_file.blank? flash[:danger] = "投稿には画像が必須です。" redirect_to new_post_path and return end # 画像のファイル名取得 upload_file_name = upload_file.original_filename output_dir = Rails.root.join('public', 'images') output_path = output_dir + upload_file_name File.open(output_path, 'w+b') do |f| f.write(upload_file.read) end # post_imagesテーブルに登録するファイル名をPostインスタンスに格納 @post.post_images.new(name: upload_file_name) # データベースに保存 if @post.save flash[:success] = "投稿しました。" redirect_to top_path and return else flash[:danger] = "投稿に失敗しました。" redirect_to new_post_path and return end end # 認証チェック def authorize redirect_to top_path unless user_signed_in? end private def post_params params.require(:post).permit(:caption).merge(user_id: current_user.id) end end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/15 05:13
2020/06/15 05:31 編集