내 페이지 편집 정보

현재 프로그래밍 학교에서 공부하고 있습니다.
졸업을 앞두고 오리지널 앱을 제작하고 있다.
그 중에서 우리는 Gem의 devise를 도입하여 사용자 정보를 관리했다.
이번에 사용자 정보의 편집과 삭제 기능을 실시하여 출력하였다.
이번에는 편집 기능만 기술한다.
devise를 가져와서 새 등록, 로그인, 로그아웃, 내 페이지를 실현합니다
완성을 전제로 기술하다.
사용자 컨트롤러와 사용자 모델이 생성되었습니다.

devise 편집 기능의 실현


라우팅 설정


routes.rb
Rails.application.routes.draw do
  devise_for :users

  root to: 'posts#index'
  resources :users, only: [:show, :edit, :update, :destroy] # edit,update,destroyを記述する

  resources :posts do
    resources :post_likes, only: [:create, :destroy]
    resources :comments, only: :create do
      resources :likes, only: [:create, :destroy]
    end
  end
end

컨트롤러 설정


comtrollers/user_controller.rb
※上記は省略しています

def edit
  end

  def update
    @post = @user.posts
    @post_like = @user.post_likes
    if @user.update(user_params)
      redirect_to user_path(@user.id)
    else
      render "devise/registrations/edit"
    end
  end

  def destroy
    if @user.destroy
      redirect_to root_path
    else
      render :show
    end
  end



  private

  def set_user
    @user = User.find(params[:id])
  end

  def user_params
    params.require(:user).permit(:nickname, :profile, :email, :image)
  end


  def move_to_user
    unless user_signed_in? && current_user.id == @user.id
      redirect_to root_path
    end
  end
end
주의해야 할 것은 user_params 방법.
여기에 업데이트하고 싶은 열을 기술합니다.이번 비밀번호는 업데이트하지 않아도 되기 때문에 기술하지 않았습니다.
나중에 암호 제외 설정에 대해 설명합니다.
move_to_사용자 방법은 본인 이외의 방문 후 첫 페이지로 돌아가는 설정입니다.

애플리케이션 컨트롤러


controllers/apolication_controller.rb
def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :profile, :image])
    devise_parameter_sanitizer.permit(:account_update, keys: [:nickname, :profile, :image])
  end
devise는password와email을 제외하고 열을 설정합니다. 파라미터를 통해 보낼 때
application_컨트롤러는 설명을 필요로 한다.

contorollers/user/registrations_controller.rb 설정

% rails g devise:controllers users
터미널에서 상술한 조작을 실행하다.

그런 다음 파일을 생성합니다.
이번에 사용한 것은registrations_controller.rb
registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
  protected

  def update_resource(resource, params)
    resource.update_without_password(params)
    resource.image.attach(account_update_params[:image])
  end
end
resource.update_without_password(params) 편집 시 비밀번호 제외
의 설정입니다.
resource.image.attach(account_update_params[:image]) 소개
이것은 사진 변경에 필요한 기술이다.
이번 프로필 사진 설정은 이벤트 저장소를 가져와서 여기에 기술했습니다.

설정 보기


views/devise/registrations/edit.html.erb
<%= form_with model: @user, url: user_path(@user.id), local: true do |f| %>
  <%= render 'posts/error', model: f.object %>

   <div class="field">
     <%= f.label :email, "メールアドレス", class: :form__text_1 %><br />
     <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
   </div>

   <div class="field">
     <%= f.label :image, "プロフィール写真" ,class: :form__text_1 %><br />
     <%= f.file_field :image %>
   </div>

   <div class="field">
     <%= f.label :nickname, "nickname",class: :form__text_1 %><br />
     <%= f.text_field :nickname %>
   </div>

   <div class="field">
     <%= f.label :profile, "プロフィール(自分を一言で表現してください)" ,class: :form__text_1 %><br />
     <%= f.text_area :profile, class: :form__text %>
   </div>

   <div class="actions">
     <%= f.submit "更新する", class: :form__btn  %>
   </div>
registrations 폴더에 수동으로 파일 만들기
암호 및 암호 재설정에 대한 설명은 포함되지 않습니다.
이상은 실시 절차입니다.
아직 초보자이기 때문에 오류가 있을 수 있습니다.
무슨 일이 있으면 메시지를 남겨주세요.

좋은 웹페이지 즐겨찾기