Wizard 형식(EOTD No.10)

아메타입니다.
기념할 만한 열 번째 실수는 여기다!

오늘의 잘못



장면


처음 보는 실수야.

Could not find devise mapping for path "/profiles".


말 그대로 젬의 "Devise"와 관련된 오류인 것 같습니다.
이번에는 Devise를 사용하여 사용자의 새 로그인을 마법사로 설정합니다.
새 로그인 페이지의 정보를 저장하는 Chefs 테이블과 소개 테이블입니다.
이 두 모델은 다음과 같은 연관성을 설명합니다.
#models/profile.rb
  belongs_to :chef, optional: true
#models/chef.rb
  has_one :profile
chef의 시야 파일에서 프로필의 시야 파일로 잘 옮겨졌지만 등록 완료 버튼을 누르는 순간 오류가 발생했습니다.

고찰하다.


잘못된 문장을 재확인하다.
그래서 잘못된 원인으로 여겨지는 두 가지 이유는 루팅에 대한 설명이 있다.
속공, 루팅 파일 검사.
#routes.rb
  devise_for :users, controllers: {
    sessions: 'users/sessions',
    passwords: 'users/passwords',
    registrations: 'users/registrations'
  }

  devise_for :chefs, controllers: {
    sessions: 'chefs/sessions',
    passwords: 'chefs/passwords',
    registrations: 'chefs/registrations'
  }

  devise_scope :chefs do
    get 'profiles', to: 'chefs/registrations#new_profile'
    post 'profiles', to: 'chefs/registrations#create_profile'
  end
소개 경로에 대한 설명은 마지막 세 줄입니다.나는 이곳에 관한 정보를 찾았다.

해결하다


수정된 서류는 여기 있습니다.
routes.rb
  devise_scope :chef do
    get 'profiles', to: 'chefs/registrations#new_profile'
    post 'profiles', to: 'chefs/registrations#create_profile'
  end
동작을 다시 확인한 후 사용자가 새 로그인에 성공했습니다!

오류 원인


https://www.rubydoc.info/github/plataformatec/devise/ActionDispatch%2FRouting%2FMapper%3Adevise_scope
위의 페이지에 따라routes의 동작이 사용자 정의되었을 때 이 devise_scope 를 호출해야 합니다.그 다음에 중요한 문구가 있다.
Be aware of that 'devise_scope' and 'as' use the singular form of the noun where other devise route commands expect the plural form.
다른 devise 관련 루트에 여러 가지 형식을 지정했습니다.devise_scope 다음은 단수 형식!!
대단히 감사합니다.

SOTD(Summary Of The Day)


마침내 명확한 참고를 찾았으니 나는 안심이 된다.
이번에는 실제 맞춤형 devise를 사용해 defalut의 기능이 얼마나 간결하고 좋은지 다시 한 번 실감했습니다.

프로그램 라이브러리를 유연하게 활용하려면 그 프로그램 라이브러리에 대한 이해를 더욱 깊이 있게 할 필요가 있다.오늘의 공부.

좋은 웹페이지 즐겨찾기