delete後のリダイレクト
解決したいこと
素人質問ですみません。投稿を削除した後、投稿一覧にリダイレクトしたいのですが、toppageにリダイレクトしてしまい、上手くいきません。解決方法を教えていだだきたいです。
該当するソースコード
ルーティングは下記のようになっています
Prefix Verb URI Pattern Controller#Action
root GET / toppages#index
login GET /login(.:format) sessions#new
POST /login(.:format) sessions#create
logout DELETE /logout(.:format) sessions#destroy
signup GET /signup(.:format) users#new
users POST /users(.:format) users#create
edit_user GET /users/:id/edit(.:format) users#edit
user GET /users/:id(.:format) users#show
PATCH /users/:id(.:format) users#update
PUT /users/:id(.:format) users#update
microposts GET /microposts(.:format) microposts#index
POST /microposts(.:format) microposts#create
new_micropost GET /microposts/new(.:format) microposts#new
edit_micropost GET /microposts/:id/edit(.:format) microposts#edit
micropost GET /microposts/:id(.:format) microposts#show
PATCH /microposts/:id(.:format) microposts#update
PUT /microposts/:id(.:format) microposts#update
DELETE /microposts/:id(.:format) microposts#destroy
microposts_controllerは下記のようになっています
class MicropostsController < ApplicationController
before_action :require_user_logged_in
before_action :correct_user, only: [:edit,:update,:destroy,:show]
def index
@microposts = current_user.microposts.order(id: :desc).page(params[:page]).per(10)
end
def update
@micropost = Micropost.find(params[:id])
if @micropost.update(micropost_params)
flash[:success] = '保存されました。'
redirect_to @micropost
else
flash.now[:danger] = '保存されませんでした。'
render :edit
end
end
def edit
@micropost = Micropost.find(params[:id])
end
def show
@micropost=Micropost.find(params[:id])
end
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = '記事を投稿しました。'
redirect_to root_url
else
@microposts = current_user.microposts.order(id: :desc).page(params[:page])
flash.now[:danger] = '記事を投稿できませんでした。'
render 'toppages/index'
end
end
def destroy
@micropost.destroy
flash[:success] = '記事を削除しました。'
redirect_back(fallback_location: microposts_path)
end
private
def micropost_params
params.require(:micropost).permit(:content,:title)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
unless @micropost
redirect_to root_url
end
end
end
viewは下記のようになっています
<h3>記事編集:「<%= @micropost.title %>」</h3>
<%= form_with(model: @micropost, local: true) do |f| %>
<p>タイトル</p>
<div class="form-group">
<%= f.text_area :title, class: 'form-control', rows: 1%>
</div>
<p>内容</p>
<div class="form-group">
<%= f.text_area :content, class: 'form-control', rows: 18 %>
</div>
<%= f.submit '保存する', class: 'btn btn-success btn-block mt-5' %>
<% end %>
<%= link_to "削除する", @micropost , method: :delete, data: { confirm: "本当に削除しますか?" }, class: 'btn btn-danger btn-block mt-2' %>
自分で試したこと
@micropostの箇所をmicroposts_path
にしたところルーティングエラーが起きてしまいました。
0