devise로 로그아웃 시 확인 페이지로 전환

소개



rails에서 devise를 시도한 로그인 로그아웃 기능을 구현하고 있으며,
로그 아웃했을 때 확인 페이지로 전환하도록 구현했습니다.
넘어졌기 때문에 기사로 하려고 합니다.
더 좋은 방법이라면 코멘트 란이나 편집 요청에 기재 바랍니다.

버전 정보


  • 루비 2.6.5
  • rails 6.0.3.3

  • 전제 조건


  • 함몰 (gem 'haml-rails')
  • devise가 도입되었으며 로그인되었습니다.

  • 컨트롤러 변경



    sessions_controller의 respond_to_on_destroy가 기본적으로 작성되었습니다.
    root_path로 전환되었습니다.
    그래서 여기 코드를 삭제합니다.
    거기에 render '천이처 URL'을 기술하는 것으로 URL처의 페이지로 천이할 수 있습니다.
    # controllers/users/sessions_controller.rb
    
    def destroy
      signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
      set_flash_message! :notice, :signed_out if signed_out
      yield if block_given?
      respond_to_on_destroy #デフォルトの記述 ← コード削除
      render '遷移先URL' #renderで遷移先のURLを記述  コード記入
    end
    

    View 만들기


    users/destoroy에 destroy.html.haml 파일을 만들었습니다.
    %h1 ログアウトしました。
    = link_to "マイページに戻る", "/"
    



    컨트롤러 사용자 정의



    sesstions: "users/sessions"를 추가하여 sessions를 사용자 정의했습니다! !
      devise_for :users, controllers: {
        registrations: "users/registrations",
        sessions: "users/sessions" #カスタマイズ
      }
    

    라우팅 사용자 정의



    라우팅도 사용자 정의합니다!
    HTTP 메서드 : delete, URL, 컨트롤러 이름 # 액션 이름
      devise_scope :user do
        get 'profiles', to: 'users/registrations#new_profile'
        post 'profiles', to: 'users/registrations#create_profile'
        get 'addresses', to: 'users/registrations#new_address'
        post 'addresses', to: 'users/registrations#create_address'
        delete 'users/destroy', to: 'devise/sessions#destroy' #追記
      end
    

    두 가지를 함께routes.rb
    
      devise_for :users, controllers: {
        registrations: "users/registrations",
        sessions: "users/sessions" #カスタマイズ
      }
      devise_scope :user do
        get 'profiles', to: 'users/registrations#new_profile'
        post 'profiles', to: 'users/registrations#create_profile'
        get 'addresses', to: 'users/registrations#new_address'
        post 'addresses', to: 'users/registrations#create_address'
        delete 'users/destroy', to: 'devise/sessions#destroy' #追記
      end
    

    요약



    아직 MVC의 이해가 없다고 느꼈습니다.
    냉정해지고 생각하자마자 해결할 수 있었던 문제였습니다.
    그리고 마크다운 쓰는 방법에도 고전하고 있습니다.
    기사 쓰는데 엄청난 시간이 걸려 버려서 빨리 되지 않으면…
    더 출력합니다.

    쇼마

    좋은 웹페이지 즐겨찾기