前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在、ユーザー編集機能を実装しているのですが、編集画面に遷移した後、名前など入力し変更ボタンを押しても、一覧ページに遷移しない状況に陥っています。また戻ろうとするとNo route matches [GET] "/users/1"というRouting Errorが発生します。
発生している問題・エラーメッセージ
No route matches [GET] "/users/1"というRouting Errorが発生します。
該当のソースコード
<div class='account-page' id='account-page'> <div class='account-page__inner clearfix'> <div class='account-page__inner--left account-page__header'> <h2>Edit Account</h2> <h5>アカウントの編集</h5> <%= link_to "ログアウト", destroy_user_session_path, method: :delete, class: 'btn'%> <%= link_to "一覧画面に戻る", :back, class: 'btn'%> </div> <div class='account-page__inner--right user-form'> <%= form_with model:current_user, local: true do |f|%> <div class='field'> <div class='field-label'> <%= f.label :name%> </div> <div class='field-input'> <%= f.text_field :name, autofocus: true%> </div> </div> <div class='field'> <div class='field-label'> <%= f.label :email%> </div> <div class='field-input'> <%= f.email_field :email%> </div> </div> <div class='actions'> <%= f.submit "Update", class: 'btn'%> </div> <% end %> </div> </div> </div>
class UsersController < ApplicationController def show end def edit end def update if current_user.update(user_params) redirect_to root_path else render :edit end end private def user_params params.require(:user).permit(:name, :email) end end
Rails.application.routes.draw do root to: 'recipe#index' devise_for :users resources :users, only:[:edit,:update] resources :recipes end
試したこと
ここに問題に対して試したことを記載してください。
binding.pryをupdateアクションの部分に入れてデータがparamsに保存されているか確認したところ入力情報は格納されていて、trueの表示になっていました。コントローラーの条件分岐もできていると思うのですが、ご教授願えますでしょうか
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー