2017-10-15 11 views
0

을 고안 : 변경 기본 노선들은 내가이 <code>routes.rb</code>이 레일

devise_for :users, :path => '', path_names: 
          { sign_in: "login", sign_out: "logout", sign_up: "registration"} 

나는 sign_insign_up 경로를 변경하고 sign_up에 가면 당신은 대신 /registration이 작동 404 오류가 발생합니다. 내가 원하는 것은 암호를 잊어 버린 것과 같은 다른 경로를 변경하고 동일한 방식으로 추가하는 것입니다. 내가 콘솔 rake routes 입력하면 , 내가 잊어 버린 암호이 참조 : 새로운

이 /password/new(.:format를 GET new_user_password) 고안이/암호 번호

추가 경로를 추가 할 수 있습니까 내 사용자 지정 경로가 작동하지만 기본 경로가 아닌 방식으로?

답변

0

체크 아웃하려면 ActionDispatch :: Routing :: Mapper # devise_for 문서 here을 꼭 확인하십시오.

devise_for :users, skip: [:sessions, :registrations, :passwords] 

devise_scope :user do 
    # sessions 
    get 'login', to: 'devise/sessions#new',  as: :new_user_session 
    post 'login', to: 'devise/sessions#create', as: :user_session 
    delete 'logout', to: 'devise/sessions#destroy', as: :destroy_user_session 
    # registrations 
    put '/account', to: 'devise/registrations#update' 
    delete '/account', to: 'devise/registrations#destroy' 
    post '/account', to: 'devise/registrations#create' 
    get '/register', to: 'devise/registrations#new', as: :new_user_registration 
    get '/account', to: 'devise/registrations#edit', as: :edit_user_registration 
    patch '/account', to: 'devise/registrations#update', as: :user_registration 
    get '/account/cancel', to: 'devise/registrations#cancel', as: :cancel_user_registration# passwords 
    # passwords 
    get 'new-pass', to: 'devise/passwords#new', as: :new_user_password 
    get 'edit-pass', to: 'devise/passwords#edit', as: :edit_user_password 
    patch 'edit-pass', to: 'devise/passwords#update', as: :user_password 
    post 'new-pass', to: 'devise/passwords#create', as: :user_password 
end 

4 코드에서 볼 수 있듯이 :

당신은 단지 여기 this-

devise_for :users, path: 'auth', path_names: { sign_in: 'login', 
               sign_out: 'logout', 
               password: 'secret', 
               confirmation: 'verification', 
               unlock: 'unblock', 
               registration: 'register', 
               sign_up: 'cmon_let_me_in' } 
+0

예'path_names : {password : '/ forgotten-password'} ',하지만 http : // localhost : 3000/forgotten/new와 같은 URL을 생성했습니다. new' – gdfgdfg

0

처럼 뭔가를 할 수는 세션, 등록 및 암호의 컨트롤러 액션/경로에 대한 예입니다 샘플 블록 this wiki

+0

나는 그것을하는 방법을 알고있다 : 세션, : 등록. 그것은 동일하지 않습니다 : 비밀 번호와 나는 무엇인지 모르겠다. 그것이 내가 묻는 이유입니다. – gdfgdfg

+0

암호도 마찬가지입니다. 위의 예에서 암호를 사용해 보셨습니까? 먼저 컨트롤러를 건너 뛰고 –

1

passwords을 건너 뛰고 원하는대로 경로를 다시 작성해야합니다 (

). 6,
devise_for :users, skip: [:passwords] 
devise_scope :user do 
    match '/forgotten-password' => 'devise/passwords#create', as: :user_password, via: [:post] 
    match '/forgotten-password' => 'devise/passwords#update', via: [:put, :patch] 
    get 'forgotten-password', to: 'devise/passwords#new', as: :new_user_password 

귀하의 사용자 정의 경로가 작동합니다. 그리고 그 모듈의 모든 경로를 건너 뜁니다.

참고 : 원하는대로 해당 모듈의 나머지 모든 경로를 덮어 써야합니다.

+0

을 다시 신고해야합니다. 안녕하세요. 문제는 동일한 URL과 동작에 대한 PUT 및 PATCH 요청이 있으며 routes.rb -'match '/ forgotten-password'=> 'users/passwords # update'에서 다음과 같이 변경하면 : : password, via : [: put, : patch]'그리고 나서 Devise의 기본보기를 사용하십시오. '<% = form_for (resource, as : resource_name, url : password_path (resource_name))'형식의 생성 된 URL은 올바른 URL이 아닌'/ forgotten.user'입니다 – gdfgdfg

+0

아, 모든 경로를 형식화해야합니다 뿐만 아니라 자원을 기반으로하는 업데이트 경로와 같이': as '키를 처리해야합니다. 업데이트 된 답변을 확인하십시오 –

+0

경로를 변경 한 후 다시 시작하십시오. 서버. 그래서 devise는 새로운 경로를 이해할 수 있습니다. –