前提・実現したいこと
データを全て削除したあとに、もう一度削除をクリックしても何も起こらない又はrootに遷移する。
を実装したいです。
発生している問題・エラーメッセージ
Routing Error No route matches [DELETE] "/scores"
該当のソースコード
ルーティング
ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root to: "scores#index" 4 resources :scores 5end
コントローラー
ruby
1class ScoresController < ApplicationController 2 before_action :authenticate_user! 3 4 5 def index 6 @score = Score.new 7 @scores = current_user.scores.order("created_at DESC") 8 @chart = current_user.scores.pluck(:created_at, :score) 9 end 10 11 def create 12 @score = Score.new(scores_params) 13 if @score.save 14 redirect_to root_path 15 else 16 render :index 17 end 18 end 19 20 21 def destroy 22 if params[:all].present? 23 @score = Score.where(params[:id]) 24 current_user.scores.destroy_all 25 else 26 @score = Score.find(params[:id]) 27 @score.destroy 28 end 29 redirect_to root_path 30 end 31 32 private 33 34 def scores_params 35 params.require(:score).permit(:score).merge(user_id: current_user.id) 36 end 37end
ビュー
ruby
1<div class="sccore_destroy"> 2 <%= link_to "一番新しいスコアを削除", score_path(@scores.ids, @scores.ids), method: :delete %> 3 <%= link_to "全てのスコアを削除", score_path(@scores.ids, all: true), method: :delete %> 4</div>
試したこと
def destroy
のredirect_to root_path
をredirect_to root_path, states: 303
として追記
二重deleteが発生しているという記事を見て記述してみました。
redirect_to root_path
を条件分岐に個別に記述してみました。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/21 01:21