2017-02-09 5 views
0

내 레일 앱에서 로그 아웃하면 로그에 Completed 204 No Content의 오류가 발생합니다. 수동으로 새로 고칠 때까지보기가 고정됩니다.레일에서 로그 아웃 할 때 앱 리디렉션 없음

나는 삭제 요청이 처리되는 방식에 오류를 추적 한 : 두 번째 줄은 HTML 대신 */*을 가져야한다

Started DELETE "https://stackoverflow.com/users/sign_out" for 127.0.0.1 at 2017-02-09 06:55:24 -0800 
Processing by Devise::SessionsController#destroy as */* 

. 문제를 해결하기 위해 어떤 구성을 변경해야하는지에 대한 정보가 있습니까?

업데이트 이것은 Rails 백엔드와 Hyperloop 프로젝트의 HyperReact 모듈을 사용하는 테스트 응용 프로그램입니다. 따라서 뷰는 React 구성 요소로 렌더링됩니다. 해당 구성 요소의 코드는 다음과 같습니다.

module Components 
    module Users 
    class Show < React::Component::Base 
     param :name, type: String 
     param :provider, type: String 
     param :signed_in_at, type: String 
     param :ip, type: String 
     param :avatar, type: String 

     def render 
     div do 
      img(src: params.avatar, width: 50, height: 50) 
      h1 { "Hello and welcome to your profile page #{params.name}!"} 
      h2 { "You are signed in with #{params.provider} since #{params.signed_in_at}." } 
      h3 { "Your ip is #{params.ip}." } 
      button.btn.btn_default(type: :button) { "Signout!" }.on(:click) do 
      HTTP.delete("users/sign_out") 
      alert("Signing out") 
      end 
     end 
     end 
    end 
    end 
end 
+0

로그 아웃하는 방법을 게시 할 수 있습니까? 사용중인 링크/버튼의 코드는 무엇입니까? 그것의 외모에서 당신 문제입니다. – Mark

+0

@Mark는 로그 아웃 코드로 업데이트되었습니다. –

+0

코드가 잘된 것처럼 보였습니다. root_path를 정의 했습니까? "콘텐츠가 없다"라고 말하고 있기 때문에 상호 작용 후 기본 리디렉션에 이것을 사용하도록 고안해야합니다. 다른 문제가있는 경우 after_sign_out_path 메서드를 항상 덮어 쓸 수 있거나 (이름이 확실하지 않은 경우) , 그러나 위키 위키에 있음) – Alexis

답변

0

죄송합니다. 귀하의 경우에는 내 대답이 적합하지 않습니다. devise를 위해 일반적으로 : method => "delete"도 정의 할 필요가있다. 나는 당신이 그렇게하는 것을 보았습니다.하지만 어쨌든 링크가 맞는지 확실하지 않습니다. 레일의 일반적인 아웃 링크를 사용 .destroy 대신 delete 사용하면 어떻게됩니까

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %> 

처럼 보인다? 액션은 'destroy'라고 불리며 http 메소드는 삭제됩니다. 그러나 죄송 합니다만, 나는 당신이 보여주는 구문에 익숙하지 않습니다.

+0

나는 거의 제로 자바 스크립트 지식을 가지고 있으므로 나와 함께 곰. 'HTTP.delete' 호출 위에'remote : true'를 넣을 수 있습니까? 그리고 유증'#의 destroy' 방법은 다음과 같습니다 는'데프 가' 을 super' destroy''형식 문제에 대한 죄송합니다 end' '삭제/자원/sign_out'은. –

+0

제 생각에 HTTP.delete는 erb 파일의': method => : delete' 호출과 동일합니다. 나는 signout으로 이어지지 않는'method : delete' 호출을 포함하는 다양한 순열을 시도했습니다. 나의 이해가 틀린 경우를 제외하고,'users/sign_out'의 경로는 Devise Users :: Sessions 컨트롤러가 #destroy 메소드를 사용하도록 트리거해야합니다. –