railsで編集後、エラー発生
原因は、パスワードが入力されていないとエラーメッセージ
iconlabel=='new'でない時(編集)、passwordのコードは出現しないようにしている。しかし、更新を実施すると、エラー、コードはeditから下記フォームで、下記の通り
<% if user.errors.present? %> <div class="alert alert-info"> <% user.errors.full_messages.each do |message| %> <%= message %> <% end %> </div> <% end %> <%= form_with model: user, local: true do |f| %> <div class="form-group mb-3"> <%= f.label :name %> <%= f.text_field :name, class:"form-control" %> </div> <div class="form-group mb-3"> <%= f.label :idnumber %> <%= f.text_field :idnumber, class:"form-control" %> </div> <div class="form-group mb-3"> <%= f.label :email %> <%= f.text_field :email, class:"form-control" %> </div> <div class="form-group mb-3"> <%= f.label :workplace %> <%= f.text_field :workplace, class:"form-control" %> </div> <div class="form-check"> <%= f.label :admin, class:"form_check_label" do %> <%= f.check_box :admin, class:"form-check_input" %> <span>管理者チェック</span> <% end %> </div> <div class="form-check"> <%= f.label :retired, class:"form_check_label" do %> <%= f.check_box :retired, class:"form-check_input" %> <span>退職者チェック</span> <% end %> </div> <div class="form-group mb-3"> <%= f.label :image %> <%= f.file_field :image, class:"form-control" %> </div> <% if iconlabel=='new' %> <div class="form-group mb-3"> <%= f.label :password %> <%= f.password_field :password, class:"form-control" %> </div> <div class="form-group mb-3"> <%= f.label :password_confirmation %> <%= f.password_field :password_confirmation, class:"form-control" %> </div> <% end %> <div class="d-grid gap-2 d-md-flex justify-content-md-end mb-3"> <%= f.submit nil, class:"btn btn-primary" %> </div> <% end %>
コントローラー
before_action :require_admin before_action :set_user, only: [:show, :edit, :update, :destroy] def index @q=User.all.ransack(params[:q]) @users = @q.result(distinct: true).recent.page(params[:page]).per(5) end def show end def new @user=User.new @iconlabel='new' end def edit @iconlabel=nil end def create @user=User.new(user_params) if @user.save session[:user_id]=@user.id redirect_to user_path(@user), notice: "ユーザ「#{@user.name}」を登録しました。" else flash[:alert]= 'Save error!' render :new end end def update if @user.update(user_params) redirect_to user_path(@user), notice: "ユーザ「#{@user.name}」を更新しました。" else flash[:alert]= 'Save error!' render :edit end end def destroy @user.destroy redirect_to users_path, notice: "ユーザ「#{@user.name}」を削除しました。" end private def user_params params.require(:user).permit(:name, :email, :workplace, :root, :admin, :password, :password_confirmation) end def set_user @user=User.find(params[:id]) end def require_admin redirect_to root_path unless current_user.admin? end
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。