RubyonRails로 유명한 devise를 다루는 데 조심하고 싶은 routes.rb를 작성하는 방법
RubyonRails에서 devise를 다루는 데 조심하고 싶은 것
가끔 라우팅이 충돌하고 devise 로그인 화면이 움직이지 않습니다.
첫째, 오류가 발생하지 않는 쓰기 방법은 다음과 같습니다.
그런 다음 오류가 발생하는 쓰기
간단히 말하면, users의 기술보다 나중에 devise_for :users를 기술해 버리면 에러가 일어난다.
어떤 오류가 발생하는지
로그인할 수 없게 됨
/users/sign_in으로 로그인할 수 없습니다.
라든지
가 나온다.
그 밖에도 여러가지 에러가 생각되지만, 어쨌든 로그인 기능이 움직이지 않게 됩니다
왜 이런 오류가 발생하는가?
routes.rb의 순서는 정말 중요합니다 ...
rake routes를 사용하여 라우팅 설정을 확인하십시오.
우선 devise_for: users의 순서가 맞을 때
devise_for : 사용자의 순서가 잘못되었을 때
어디에 변화가 있는가 하면, users 컨트롤러의 라우팅과 devise의 라우팅의 순서
이번에 발생한 오류는 users/:id라는 라우팅이 users/sign_in을 포괄하기 때문에 발생하는 오류입니다.
users/: id는 : id가 변수로 인식되므로 문자열이지만 숫자이지만 요청하는 URL이 users/00이되면 users/: id 라우팅이 작동합니다. .
즉, users/sign_in을 리퀘스트해도, users/:id(id = sign_in)로서 인식되어 버려, devise의 콘트롤러가 움직이지 않게 되어 버리는 것이다.
실제로 users/:id가 움직이고 id => sign_in입니다.
오류 화면의 Request를 보면 {"id"=> "sign_in"}입니다.
sign_in이 :id로 인식됩니다.
devise_for :users는 먼저 쓰자.
이번과 같이, users/:id가 users/sign_in을 포괄하지 않게, devise_for :users를 먼저 쓰는 것으로 users/sign_in 뒤에 users/:id가 라우팅으로서 움직인다.
users 컨트롤러가 없으면 차례로 신경 쓸 필요는 없지만 어떤 경우에는 조심하지 않으면 오류가 발생합니다.
Request의 parameters를 보는 것도 중요합니다.
Reference
이 문제에 관하여(RubyonRails로 유명한 devise를 다루는 데 조심하고 싶은 routes.rb를 작성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuki_uchida/items/8186ec2283800bdae8c8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)