前提
ECサイトを制作中なのですが、ジャンル編集画面の更新ができなくエラーが出てしまいます
実現したいこと
エラーを解決して更新できるようにしたい
発生している問題・エラーメッセージ
No route matches [PATCH] "/admin/genres"
該当のソースコード
rails/routes.rb
1 devise_for :admin, skip: [:registrations, :passwords] ,controllers: { 2 sessions: "admin/sessions" 3 } 4 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 5 6 namespace :admin do 7 resources :items, only: [:index, :new, :show, :edit] 8 end 9 10 namespace :admin do 11 resources :genres, only: [:index, :create, :edit, :update] 12 end 13 14 namespace :public do 15 root to: 'homes#top' 16 get '/about' => 'homes#about' 17 end 18 19 20 end
rails/genres_controller
1class Admin::GenresController < ApplicationController 2 3 before_action :authenticate_admin! 4 5 def index 6 @genres = Genre.all 7 @genre = Genre.new 8 end 9 10 def create 11 @genre = Genre.new(genre_params) 12 @genres = Genre.all 13 if @genre.save 14 flash[:notice] = "新しくジャンルを追加しました。" 15 redirect_to admin_genres_path 16 else 17 render 'index' 18 end 19 end 20 21 def edit 22 @genre = Genre.find(params[:id]) 23 end 24 25 def update 26 @genre = Genre.find(params[:id]) 27 if @genre.update(genre_params) 28 redirect_to admin_genres_path 29 flash[:notice] = "ジャンルを更新しました。" 30 else 31 render 'edit' 32 end 33 end 34 35 private 36 37 def genre_params 38 params.require(:genre).permit(:name) 39 end 40 41end 42
rails/index.html.erb
1<div class="container"> 2 <div class="row"> 3 <div class="ml-5"> 4 <h2 class="mb-3">ジャンル一覧・追加</h2> 5 </div> 6 </div> 7 <%= form_with model: @genre, url: admin_genres_path do |f| %> 8 <div class="row"> 9 <div class="col-11 mb-3"> 10 <div class="row"> 11 <div class="col-2 col-form-label">ジャンル名</div> 12 <div class="col-3"> 13 <%= f.text_field :name, autofocus: true, autocomplete: "name", class: "form-control"%> 14 </div> 15 <div class="col-2"> 16 <%= f.submit "新規登録",class: "btn btn-success col-10" %> 17 </div> 18 19 </div> 20 </div> 21 </div> 22 23 <% end %> 24 25 <div class="row"> 26 <div class="col-11 mt-3"> 27 <div class="row"> 28 <div class="col-5"> 29 <table class="table table-hover table-inverse"> 30 <thead class="table-secondary"> 31 <tr> 32 <th>ジャンル</th> 33 <th colspan="3"></th> 34 </tr> 35 </thead> 36 <tbody> 37 <% @genres.each do |genre| %> 38 <tr> 39 <td> 40 <%= genre.name %> 41 </td> 42 <td> 43 <%= link_to "編集", edit_admin_genre_path(genre.id), class: "btn btn-success col-10" %> 44 </td> 45 </tr> 46 <% end %> 47 48 </tbody> 49 </table> 50 51 </div> 52 </div> 53 </div> 54 </div> 55 56</div>
rails/edit.html.erb
1<div class="container"> 2 <div class="row"> 3 <div class="ml-5"> 4 <h2 class="mb-3">ジャンル編集</h2> 5 </div> 6 </div> 7 <%= form_with model: @genre, url: admin_genres_path do |f| %> 8 <div class="row"> 9 <div class="col-11 mb-3"> 10 <div class="row"> 11 <div class="col-2 col-form-label">ジャンル名</div> 12 <div class="col-3"> 13 <%= f.text_field :name, autofocus: true, autocomplete: "name", class: "form-control"%> 14 </div> 15 <div class="col-2"> 16 <%= f.submit "保存",class: "btn btn-success col-10" %> 17 </div> 18 19 </div> 20 </div> 21 </div> 22 23 <% end %> 24</div>
試したこと
rails routesによるpathの確認
editページの form_withへメソッド,idの追加
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。