Rails 7에서 터보와 함께 Devise를 사용하는 방법
현재 Devise gem은 이 작업을 지원하지 않으므로 제대로 작동하려면 약간의 조정이 필요합니다.
NB: 이 튜토리얼에서는 Devise gem을 이미 설치하고 구성했다고 가정합니다.
먼저 컨트롤러를 생성하겠습니다. 광산의 이름을 app/controllers/turbo_devise_user_controller.rb로 지정하겠습니다.
class TurboDeviseUserController < ApplicationController
class Responder < ActionController::Responder
def to_turbo_stream
controller.render(options.merge(formats: :html))
rescue ActionView::MissingTemplate => error
if get?
raise error
elsif has_errors? && default_action
render rendering_options.merge(formats: :html,
status: :unprocessable_entity)
else
redirect_to navigation_location
end
end
end
self.responder = Responder
respond_to :html, :turbo_stream
end
위의 컨트롤러는 Devise가 터보 및 렌더링 템플릿에 응답하도록 합니다. 그러나 물론 이것은 config/initializers/devise.rb에 있는 장치 초기화 프로그램을 수정하지 않고서는 발생하지 않습니다.
class TurboFailureApp < Devise::FailureApp
def respond
if request_format == :turbo_stream
redirect
else
super
end
end
def skip_format?
%w(html turbo_stream */*).include? request_format.to_s
end
end
Devise.setup do |config|
...
# Configure the parent class to the custom controller.
config.parent_controller = 'TurboDeviseUserController'
config.navigational_formats = ['*/*', :html, :turbo_stream]
# Warden configuration
config.warden do |manager|
manager.failure_app = TurboFailureApp
end
...
end
그게 다야! 이제 레일스 앱을 시작하고 코딩을 계속하세요!!.
Reference
이 문제에 관하여(Rails 7에서 터보와 함께 Devise를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/efocoder/how-to-use-devise-with-turbo-in-rails-7-9n9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)