ediページをモーダルで表示し、
更新が「失敗したらモーダル内にエラーメッセージを出す処理を行いたいです。
お忙しい中恐縮ですが、ご教授頂けないでしょうか。
■ 現状 → モーダルは出て更新もできるが、エラー時に元々のedit.html.erbに遷移してしまう
*_edit.html.erb(ここにエラーを出したい)*
↓
*edit.html.erb(こちらに遷移してしまう)*
■ 行った対策 → edit.html.erbを手動で削除し_edit.html.erbのみにした
■ 判らない内容 → 更新成功後のパスはregistrations_controllerに
*registrations_controller* def after_update_path_for(resource) end
を記入することで達成できるが、失敗時の処理はどのように書けば良いのか。。。
erb
1 2*_edt.html.erb* 3 4<div class="modal-dialog modal-lg modal-dialog-center"> 5 <div class="modal-content"> 6 <div class="modal-header"> 7 <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 8 <span aria-hidden="true">✖</span> 9 </button> 10 <h1 class="modal-title">お客様情報編集</h1> 11 </div> 12 <div class="modal-body"> 13<div class="row"> 14 <div class="col-md-6 col-md-offset-3"> 15<%= form_for(resource, as: resource_name, url: user_registration_path) do |f| %> 16 <div class="js-message-errors"></div> 17 18 19<div class="field"> 20 <%= f.label :name, class: "label-signup" %><br /> 21 <%= f.text_field :name, autofocus: true, autocomplete: "name", class: "form-control" %> 22</div> 23 24 <div class="field"> 25 <%= f.label :email, class: "label-signup" %><br /> 26 <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "form-control" %> 27 </div> 28 29 <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> 30 <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div> 31 <% end %> 32 33 <div class="field"> 34 <%= f.label :contact, class: "label-signup" %><br /> 35 <%= f.number_field :contact, autofocus: true, autocomplete: "contact", min: 1, max: 31, class: "form-control" %> 36</div> 37 38 <div class="field"> 39 <%= f.label :password ,class: "label-signup"%></i><br /> 40 <%= f.password_field :password, autocomplete: "new-password", class: "form-control" %> 41 <% if @minimum_password_length %> 42 <br /> 43 <em><%= @minimum_password_length %> characters minimum</em> 44 <% end %> 45 </div> 46 47 <div class="field"> 48 <%= f.label :password_confirmation, class: "label-signup" %> (パスワードを変更する場合は必須です)<br /> 49 <%= f.password_field :password_confirmation, autocomplete: "new-password", class: "form-control" %> 50 </div> 51 52 <div class="field"> 53 <%= f.label :current_password , class: "label-signup"%> (1つでも項目を変更する場合は必須です)<br /> 54 <%= f.password_field :current_password, autocomplete: "current-password", class: "form-control" %> 55 </div> 56 57 58 <%= f.submit "更新する",class: "btn btn-primary btn-block btn-signup" %> 59<% end %> 60</div> 61 </div> 62</div> 63</div> 64</div>
rb
1Rails.application.routes.draw do 2 3 get 'sessions/new' 4 5 devise_for :users, controllers: { 6 sessions: 'users/sessions', 7 passwords: 'users/passwords', 8 registrations: 'users/registrations' 9 } 10 devise_for :admins, controllers: { 11 sessions: 'admins/sessions', 12 passwords: 'admins/passwords', 13 registrations: 'admins/registrations' 14 } 15 # トップページ 16 root 'home#top' 17 # ログイン機能 18 get '/login', to: 'sessions#new' 19 post '/login', to: 'sessions#create' 20 delete '/logout', to: 'sessions#destroy' 21 # モーダルページ 22 get '/top_overview', to: 'home#top_overview' 23 resources :users do 24 member do 25 get 'edit_admin_index' #admin.indexの編集 26 patch 'update_admin_index'#admin.indexの編集 27 end 28 end 29end 30 31
rb
1 2*application_controller* 3 4 5class ApplicationController < ActionController::Base 6 before_action :configure_account_update_params, if: :devise_controller? 7 protect_from_forgery with: :exception 8 9 private 10 def storable_location? 11 request.get? && is_navigational_format? && !devise_controller? && !request.xhr? 12 end 13 14 15 16 def after_sign_in_path_for(resource_or_scope) 17 stored_location_for(resource_or_scope) || super 18 end 19 20 21 22 23 protected 24 25 def configure_account_update_params 26 devise_parameter_sanitizer.permit(:account_update, keys: [:name, :contact]) 27 28 end 29end
registrations_controllerには更新成功時の遷移処理しか書いていません。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/22 14:59
2021/01/23 02:43
2021/01/23 12:16