내 페이지 편집 정보
졸업을 앞두고 오리지널 앱을 제작하고 있다.
그 중에서 우리는 Gem의 devise를 도입하여 사용자 정보를 관리했다.
이번에 사용자 정보의 편집과 삭제 기능을 실시하여 출력하였다.
이번에는 편집 기능만 기술한다.
devise를 가져와서 새 등록, 로그인, 로그아웃, 내 페이지를 실현합니다
완성을 전제로 기술하다.
사용자 컨트롤러와 사용자 모델이 생성되었습니다.
devise 편집 기능의 실현
라우팅 설정
routes.rbRails.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.rbdef 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.rbclass 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 폴더에 수동으로 파일 만들기
암호 및 암호 재설정에 대한 설명은 포함되지 않습니다.
이상은 실시 절차입니다.
아직 초보자이기 때문에 오류가 있을 수 있습니다.
무슨 일이 있으면 메시지를 남겨주세요.
Reference
이 문제에 관하여(내 페이지 편집 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tetsu1026/items/4f573b077accf8a63ee2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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
※上記は省略しています
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
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
% rails g devise:controllers users
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
<%= 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>
Reference
이 문제에 관하여(내 페이지 편집 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tetsu1026/items/4f573b077accf8a63ee2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)