Development Tip

Rails에서 Devise 뷰 커스터마이징

yourdevel 2020. 10. 30. 21:09
반응형

Rails에서 Devise 뷰 커스터마이징


사용자 인증을 위해 devise를 사용하고 있지만 가입, 로그인 등 페이지에 대한 멋진 모형이 있습니다. 이미 rails generate devise:views User명령을 수행했고 보기 폴더에 모든보기가 있지만 registration / new.html.erb를 내 new.html.erb로 바꾸었을 때 변경되거나 다르게 보이지 않습니다. 내가 무슨 짓을 한 것 같다.

누구나 내가 뭘 잘못하고 있는지 또는 적어도 뷰를 성공적으로 사용자 정의하는 방법을 알고 있습니다.

추신 : devise / registration # new의 경로를 / signup으로 변경했다는 점에 유의하는 것이 중요합니까?


경로 signup또는 devise/registrations#new보기를 렌더링합니다 views/devise/registrations/new.html.erb. 을 (를) 변경 한 것처럼 들리 views/user/registrations/new.html.erb므로 렌더링되지 않은 이후 변경 사항이 표시되지 않는 이유를 설명합니다.

user/registrations_controller.rb에서 확장 Devise::RegistrationsController하여 /signup경로를 가리키는를 생성 user/registrations#new하거나에서 직접 변경할 수 있습니다.views/devise/registrations/new.html.erb

로그인 ( devise/sessions) 페이지 에도 동일한 아이디어가 적용됩니다 .

도움이 되었기를 바랍니다.


한눈에 대답.

...대신에

rails generate devise:views User

사용하다:

rails generate devise:views

이미 만든 경우 만든 폴더 장치 app/views/User를 새 폴더 로 이동 합니다 app/views/devise(또는 옵션 인 경우 User폴더 이름을로 바꿉니다 devise.).

해당 폴더는 다음과 같습니다.

app/views/User/confirmations
app/views/User/mailer
app/views/User/passwords
app/views/User/registrations
app/views/User/sessions
app/views/User/shared
app/views/User/unlocks

다른 변경은 필요하지 않습니다.


이것은 오래된 질문이지만 누군가가 우연히 발견하면 추가 할 것이라고 생각했습니다. 질문이 원래 요청 되었기 때문에 이것이 새로운 추가인지 확실하지 않지만 그렇다면 더 간단한 (더 현대적인) 접근 방식은 이것입니다.

파일 config/initializers/devise.rb에는 다음 코드 블록이 있습니다.

# ==> Scopes configuration
# Turn scoped views on. Before rendering "sessions/new", it will first check for
# "users/sessions/new". It's turned off by default because it's slower if you
# are using only default views.
# config.scoped_views = false

주석을 제거 config.scoped_views = false하고 값을로 변경하면 truedevise는 사용자 정의 뷰가 존재하는지 자동으로 확인하고 존재하는 경우이를 제공합니다. 그것이 응용 프로그램에 약간의 오버 헤드를 추가한다고 말했듯이 지금까지 내 경험상 이것은 최소한입니다.


여전히 이것에 문제가있는 사람에게 문제는에 대한 호출에 rails generate devise:views User있습니다. rails generate devise:viewsDevise Rails Engine에서 현재 뷰를 가져 오기위한 것이어야합니다 . 이렇게하면 기본 경로에서 작동하는 적절한보기가 생성됩니다.


예를 들어 사용자 정의보기를 생성 한 후

rails generate devise:views User

scoped_views으로config/initializer/devise.rb

view config.scoped_views = true

그리고 당신은 끝났습니다.


돌아가서 고안 문서를 읽을 때까지 동일한 문제가 발생했습니다. :)

으로 rails generate devise:views가서 initializers/devise.rb설정 했는지 확인하십시오 config.scoped_views = true. 이것은에서 유증 문서에 설명되어 https://github.com/plataformatec/devise 뿐만 아니라에서 devise.rb의견.

이 작업을 수행 한 후 views/users보석에있는 보기 대신에 내 자신의보기가 나타나기 시작했습니다.


를 사용 rails g devise:views User하면 둘 이상의 역할이있을 때 사용자 정의 할 수 있습니다.

이 작업을 수행하는 적절한 방법은 devise.rbin config/initializer/폴더 로 이동하는 것 입니다.

주석 해제 및 설정 config.scoped_views = true.

이제 아무 문제없이보기 erb 파일을 편집 할 수 있습니다.


향후 참조를 위해 devise => user에서 폴더 이름을 바꿀 수 있으며 그 반대의 경우도 마찬가지이며 레일은 경로를 찾을 것입니다.

참고 URL : https://stackoverflow.com/questions/6646845/customizing-devise-views-in-rails

반응형