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
하고 값을로 변경하면 true
devise는 사용자 정의 뷰가 존재하는지 자동으로 확인하고 존재하는 경우이를 제공합니다. 그것이 응용 프로그램에 약간의 오버 헤드를 추가한다고 말했듯이 지금까지 내 경험상 이것은 최소한입니다.
여전히 이것에 문제가있는 사람에게 문제는에 대한 호출에 rails generate devise:views User
있습니다. rails generate devise:views
Devise 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.rb
in config/initializer/
폴더 로 이동하는 것 입니다.
주석 해제 및 설정 config.scoped_views = true
.
이제 아무 문제없이보기 erb 파일을 편집 할 수 있습니다.
향후 참조를 위해 devise => user에서 폴더 이름을 바꿀 수 있으며 그 반대의 경우도 마찬가지이며 레일은 경로를 찾을 것입니다.
참고 URL : https://stackoverflow.com/questions/6646845/customizing-devise-views-in-rails
'Development Tip' 카테고리의 다른 글
Android Studio에서 앱을 디버그 할 수 없음 (0) | 2020.10.30 |
---|---|
lxml 설치 오류 우분투 14.04 (내부 컴파일러 오류) (0) | 2020.10.30 |
intelliJ IDEA 13 오류 : Android SDK를 선택하세요. (0) | 2020.10.30 |
Android에서 흔들림 / 흔들림보기 애니메이션 (0) | 2020.10.30 |
GCC C ++ 링커 오류 : 'vtable for XXX'에 대한 정의되지 않은 참조, 'ClassName :: ClassName ()'에 대한 정의되지 않은 참조 (0) | 2020.10.30 |