現状
ユーザー機能を実装中です。ユーザー画面に遷移して編集し、情報を更新したら詳細画面に画面遷移するように実装しようしています。
解決したいこと
更新した後に、画面遷移が詳細画面に戻るようにしたいです。
現状では、編集画面に留まり情報の更新することができないので更新できるようにしたいです。
パラメーターでは更新した情報を取得できているように思われます。
どこが原因かアドバイスいただけないでしょうか!
お願いします!
コード
↓user_controller
Ruby
1class UsersController < ApplicationController 2 before_action :set_user, only: [:show, :edit] 3 4 def show 5 end 6 7 def edit 8 end 9 10 def update 11 @user = User.find(params[:id]) 12 if @user.update(user_params) 13 redirect_to user_path(@user) 14 else 15 render :edit 16 end 17 end 18 19 private 20 def set_user 21 @user = User.find(params[:id]) 22 end 23 24 def user_params 25 params.require(:user).permit(:nickname, :email, :first_name, :last_name, :first_name_kana, :last_name_kana) 26 end 27end
↓edit.html.erb
Ruby
1<div class="show-container"> 2 <%= render "show_header" %> 3 4 <div class="show-contents"> 5 <div class="more"> 6 <%= form_with model: @user, url: user_path, local: true do |f| %> 7 <div class="more-lists"> 8 <p>ニックネーム :</p> 9 <p><%= f.text_field :nickname, class: 'form-event', autofocus: true%></p> 10 </div> 11 12 <div class="more-lists"> 13 <p>Email :</p> 14 <p><%= f.email_field :email, class: 'form-event' %></p> 15 </div> 16 17 <div class="more-lists"> 18 <p>名前 :</p> 19 <p><%= f.text_field :first_name, class: 'form-event' %> <%= f.text_field :last_name, class: 'form-event' %></p> 20 </div> 21 22 <div class="more-lists"> 23 <p>フリガナ :</p> 24 <p><%= f.text_field :first_name_kana, class: 'form-event' %> <%= f.text_field :last_name_kana, class: 'form-event' %></p> 25 </div> 26 27 <%= link_to root_path do %> 28 <button class="cancel-btn">戻る</button> 29 <% end %> 30 31 <%= f.submit "Update", class: 'cancel-btn'%> 32 <% end %> 33 </div> 34 </div> 35</div> 36
↓route.rb
Ruby
1Rails.application.routes.draw do 2 devise_for :users 3 root to: "rooms#index" 4 resources :rooms, only: [:new, :create] do 5 resources :memos, only: [:index, :create] 6 end 7 resources :events, only: [:index, :new, :create] 8 resources :users, only: [:show, :edit, :update] 9end
↓model:user.rb
Ruby
1class User < ApplicationRecord 2 # Include default devise modules. Others available are: 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, 5 :recoverable, :rememberable, :validatable 6 7 has_many :room_users 8 has_many :rooms, through: :room_users 9 has_many :memos 10 has_many :events 11 12 with_options presence: true, format: { with: /\A[ぁ-んァ-ヶ一-龥々]+\z/, message: '全角文字を使用してください' } do 13 validates :first_name 14 validates :last_name 15 end 16 17 with_options presence: true, format: { with: /\A[ァ-ヶ一-]+\z/, message: '全角カナを使用してください' } do 18 validates :first_name_kana 19 validates :last_name_kana 20 end 21 22 validates :password, presence: true, length: { minimum: 6 }, 23 format: { with: /(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]{6,}/, message: 'は半角英数字で入力してください' } 24 25 validates :nickname, presence: true 26 27end
↓更新時に取得したパラメーター
Ruby
1=> <ActionController::Parameters {"_method"=>"patch", "authenticity_token"=>"g+/y1arGj1kV4z4RW9o59aAnrYKixABaLYnZ1/RRuWpEitvB+6MX0Z/1b+2KfVyLYQviRweSamZIRORZJ1I+6w==", "user"=>{"nickname"=>"test", "email"=>"test3@test", "first_name"=>"名前", "last_name"=>"名前", "first_name_kana"=>"テスト", "last_name_kana"=>"テスト"}, "commit"=>"Update", "controller"=>"users", "action"=>"update", "id"=>"1"} permitted: false>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/08 05:05