2014-04-29 4 views
3

나는 "로그 아웃"을 클릭 다음 라우팅 오류 얻을 :어떤 경로가 일치하지 않습니다 [GET] "/ 로그 아웃"[레일]

: 이것은 내 application.html.erb 파일이

No route matches [GET] "/logout" 

입니다

<% if session[:user_id] %> 
     <%= link_to 'Logout', logout_path, :method => :delete %> 
    <% end %> 

이 내 routes.rb 파일입니다

get 'admin' => 'admin#index' 
    controller :sessions do 
    get 'login' => :new 
    post 'login'=> :create 
    delete 'logout' => :destroy 
    end 

    get "sessions/create" 
    get "sessions/destroy" 

아무도이 문제를 해결하는 방법을 알고 있나요

?

+4

기본 제공 JavaScript 라이브러리 (jquery/jquery_ujs)를 활성화 했습니까? delete 메소드는 브라우저에서 직접 지원하지 않으므로, 숨겨진 필드 _method가있는 양식이 실제로 생성되어 결국 Rails가 해석하여 올바른 위치로 안내합니다. –

+0

답변에 내 코멘트를 승격했습니다 ... –

+3

'delete 'logout'=> : 'destroy'를'logout '=> : destroy'로 변경하면됩니다. – Jenorish

답변

5

기본 제공 JavaScript 라이브러리 (jquery/jquery_ujs)를 활성화 했습니까? delete 메서드는 브라우저에서 직접 지원하지 않으므로 실제로는 숨겨진 필드 _method이있는 양식을 만들어 결국 Rails가 해석하여 올바른 위치로 안내합니다.

편집 :

는,이 라이브러리를 사용하여 응용 프로그램 레이아웃 파일을 확인합니다. 일반적으로 app/views/layouts/application.html.erb에 있지만 앱을 맞춤 설정 한 경우 달라질 수 있습니다.

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

당신을 위해이 작업을 받아야합니다,하지만하지 않을 경우 다시 게시하고 내가 더 도움을하려고합니다 :

당신은 head 섹션에서 다음 태그가해야합니다. GitHub이나 그 밖의 다른 곳에서 코드를 온라인으로 가져올 수 있다면 유용 할 것입니다. 그래서 우리는 여러분이 컨텍스트에서 무엇을하려고하는지 볼 수 있습니다.

+0

아니요. 어떻게 활성화 했습니까? –

+0

아직 편집하지 않은 경우 제 편집 된 답변을 참조하십시오. –

4

변경 delete 'logout' => :destroy에서 get 'logout' => :destroy으로 변경됩니다.

+0

4.0.4 레일 버전을 실행 중이며이 두 줄이 있습니다. 하지만 도움을 주셔서 감사합니다. @ Kingstone는 그 문제를 해결했다 :) –

+0

@Koin 아랍, 잭은 당신에게 정답을 표시하게하려고하고있다. – msanteler

관련 문제