現在、Rails 5.2を用いてInstagramのクローン風のアプリを作成しております。
画像を投稿したタイミングで、redirect_toを用いて投稿詳細画面に
飛ばしたいのですが、下記のコードを設定しても投稿詳細画面へ移行しない状況です。
postsコントローラ
1class PostsController < ApplicationController 2 before_action :authenticate_user! 3 before_action :set_post, only: %i(show destroy) 4 5 6 def index 7 @posts = Post.all.includes(:photos, :user).order('created_at DESC') 8 end 9 10 def show 11 @post = Post.find_by(id: params[:id]) 12 end 13 14 def new 15 @post = Post.new 16 @post.photos.build 17 end 18 19 def create 20 @post = Post.new(post_params) 21 if @post.photos.present? 22 @post.save 23 redirect_to controller: 'posts', action: 'index' 24 flash[:notice] = "投稿が保存されました" 25 else 26 redirect_to root_path 27 flash[:alert] = "投稿に失敗しました" 28 end 29 end 30 31 32 def destroy 33 if @post.user == current_user 34 flash[:notice] = "投稿が削除されました" if @post.destroy 35 else 36 flash[:alert] = "投稿の削除に失敗しました" 37 end 38 redirect_to root_path 39 end 40 41 private 42 def post_params 43 params.require(:post).permit(:caption, photos_attributes: [:image]).merge(user_id: current_user.id) 44 end 45 46 def set_post 47 @post =Post.find_by(id: params[:id]) 48 end 49end 50 51
route.rb
1 post_photos POST /posts/:post_id/photos(.:format) photos#create 2 post_likes POST /posts/:post_id/likes(.:format) likes#create 3 post_like DELETE /posts/:post_id/likes/:id(.:format) likes#destroy 4 post_comments POST /posts/:post_id/comments(.:format) comments#create 5 post_comment DELETE /posts/:post_id/comments/:id(.:format) comments#destroy 6 posts GET /posts(.:format) posts#index 7 POST /posts(.:format) posts#create 8 new_post GET /posts/new(.:format) posts#new 9 post GET /posts/:id(.:format) posts#show 10 DELETE /posts/:id(.:format) posts#destroy
★試してみたこと
redirect_to post_pathとredirect_to post_path(post)
と修正し、投稿してみましたが
うまくいきませんでした。
恐れ入りますが、アドバイスをいただきたく、何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/20 07:46
2020/03/20 08:37
2020/03/20 08:52
2020/03/20 09:52