【Rails】 devise로 신규 등록 후 또는 로그인 후 root_path 이외의 페이지로 건너 뜁니다.

2384 단어 Rails5Railsdevise

devise에서 새로 등록했지만 root_path 이외의 페이지로 건너 뛰고 싶습니다 ...



지금까지 devise 사용해 왔지만 신규 등록이나 로그인을 하면 root_path의 페이지에 마음대로 돌아가 로그인하고 있는 상태가 되었습니다만(아니-편리), 사이트 만들고 있는 도중에 root_path 이외의 페이지에 날렸다 일이 되어 조사해 보았습니다.

컨트롤러에 쓰고 날리기



root_path 이외의 페이지 천이는 아마 컨트롤러에 쓰지 않으면 할 수 없을지도
조사하고 있으면 application_controller.rb에 정리해 쓰는 쪽이나 각각의 동작에 맞추어 registrations_controller.rb나 sessions_controller.rb에 쓰는 쪽이 있었습니다만 이번은 application_controller.rb에 정리해 썼습니다.

그 전에 rails routes로 날고 싶은 path를 확인




이번에는 아래에서 두 번째 user_path로 날아갑니다.

application_controller.rb에 설명



application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_in_path_for(resource)
    user_path(resource)
  end
end

이 'after_sign_in_path_for(resource)'로 로그인 후 어디 페이지로 날지 지정할 수 있어 안에 path를 쓰면 거기에 날아 버립니다. 이번에는 user_path입니다.

덧붙여서 path 옆에 (resource)라고 쓰고 있는 것은 URI Pattern이/users/:id이므로 이:id를 건네주기 위해서는 (resource)가 필요합니다. 이것이 없으면 오류가 발생합니다.

보충



이번에는 신규 등록 후나 로그인 후에 지정한 페이지로 날리는 방법이지만 로그아웃한 후에도 같은 방식으로 지정한 페이지로 날릴 수 있으므로 소개

application_controller.rb
class ApplicationController < ActionController::Base
  def after_sign_out_path_for(resource)
    index_path #今回は仮にindex_pathを置いていますがここにログアウト後のpathを書く
  end
end

글쎄, 아무것도하지 않으면 root_path로 날아 가기 때문에 너무 많이 사용하지 않을 것 같습니다.

그럼

좋은 웹페이지 즐겨찾기