2011-07-06 25 views
15

Tôi đang trong quá trình cập nhật ứng dụng của mình để tôi sử dụng đá quý Devise để xác thực. Mọi thứ dường như hoạt động tốt, ngoại trừ việc tôi dường như không thể đăng xuất được.Sự cố khi đăng xuất bằng Devise trên ứng dụng của tôi

tôi nhận được lỗi:

Couldn't find User with ID=sign_out 
Parameters: 
{"id"=>"sign_out"} 

tôi có thể theo dõi các lỗi về hành động hiển thị trong điều khiển người dùng của tôi:

def show 
    @user = User.find(params[:id]) 
    end 

Vấn đề là tôi không chắc chắn lý do tại sao nó đang cố gắng để hiển thị hành động hiển thị cho người dùng của tôi. Nhìn chung trang của tôi có định dạng này:

<% if user_signed_in? %> 
    <%= render 'shared/feed_home' %> 
<% else %> 
    <%= render 'shared/splash' %> 
<% end %> 

Theo hướng dẫn devise, đường dẫn đăng nhập ra của tôi trông như thế này:

<li><%= link_to "Sign out", destroy_user_session_path %></li> 

Nếu người dùng không đăng nhập, nó sẽ làm cho trang splash mà về cơ bản là html tĩnh. Bất kỳ đề xuất về cách giúp đỡ? Ngay cả khi bạn chỉ có thể đưa tôi vào công viên bóng bên phải về vấn đề đó sẽ được nhiều đánh giá cao.

Here is my routes file: 


    devise_for :users 
    resources :users do 
    member do 
     get :following, :followers, :following_tags, :following_posts 
    end 
    end 
    resources :posts 

    resources :votes 
    resources :comments 
    resources :tags 
    resources :events 

    #resources :posts, :only => [:create, :destroy, :show] 
    resources :relationships, :only => [:create, :destroy] 

    root :to =>'pages#subscribed' 


    match '/contact', :to => 'pages#contact' 
    match '/about', :to => 'pages#about' 
    match '/live', :to => "pages#home" 
    match '/voted', :to => 'pages#highest_voted' 
    match '/signup', :to => 'users#new' 

Đây là tuyến đường cào của tôi:

 new_user_session GET /users/sign_in(.:format)    {:action=>"new", :controller=>"devise/sessions"} 
      user_session POST /users/sign_in(.:format)    {:action=>"create", :controller=>"devise/sessions"} 
    destroy_user_session DELETE /users/sign_out(.:format)   {:action=>"destroy", :controller=>"devise/sessions"} 
      user_password POST /users/password(.:format)   {:action=>"create", :controller=>"devise/passwords"} 
     new_user_password GET /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"} 
     edit_user_password GET /users/password/edit(.:format)  {:action=>"edit", :controller=>"devise/passwords"} 
         PUT /users/password(.:format)   {:action=>"update", :controller=>"devise/passwords"} 
cancel_user_registration GET /users/cancel(.:format)    {:action=>"cancel", :controller=>"devise/registrations"} 
     user_registration POST /users(.:format)      {:action=>"create", :controller=>"devise/registrations"} 
    new_user_registration GET /users/sign_up(.:format)    {:action=>"new", :controller=>"devise/registrations"} 
    edit_user_registration GET /users/edit(.:format)    {:action=>"edit", :controller=>"devise/registrations"} 
         PUT /users(.:format)      {:action=>"update", :controller=>"devise/registrations"} 
         DELETE /users(.:format)      {:action=>"destroy", :controller=>"devise/registrations"} 
      following_user GET /users/:id/following(.:format)  {:action=>"following", :controller=>"users"} 
      followers_user GET /users/:id/followers(.:format)  {:action=>"followers", :controller=>"users"} 
    following_tags_user GET /users/:id/following_tags(.:format) {:action=>"following_tags", :controller=>"users"} 
    following_posts_user GET /users/:id/following_posts(.:format) {:action=>"following_posts", :controller=>"users"} 
        users GET /users(.:format)      {:action=>"index", :controller=>"users"} 
         POST /users(.:format)      {:action=>"create", :controller=>"users"} 
       new_user GET /users/new(.:format)     {:action=>"new", :controller=>"users"} 
       edit_user GET /users/:id/edit(.:format)   {:action=>"edit", :controller=>"users"} 
        user GET /users/:id(.:format)     {:action=>"show", :controller=>"users"} 
         PUT /users/:id(.:format)     {:action=>"update", :controller=>"users"} 
         DELETE /users/:id(.:format)     {:action=>"destroy", :controller=>"users"} 
        posts GET /posts(.:format)      {:action=>"index", :controller=>"posts"} 
         POST /posts(.:format)      {:action=>"create", :controller=>"posts"} 
       new_post GET /posts/new(.:format)     {:action=>"new", :controller=>"posts"} 
       edit_post GET /posts/:id/edit(.:format)   {:action=>"edit", :controller=>"posts"} 
        post GET /posts/:id(.:format)     {:action=>"show", :controller=>"posts"} 
         PUT /posts/:id(.:format)     {:action=>"update", :controller=>"posts"} 
         DELETE /posts/:id(.:format)     {:action=>"destroy", :controller=>"posts"} 
        votes GET /votes(.:format)      {:action=>"index", :controller=>"votes"} 
         POST /votes(.:format)      {:action=>"create", :controller=>"votes"} 
       new_vote GET /votes/new(.:format)     {:action=>"new", :controller=>"votes"} 
       edit_vote GET /votes/:id/edit(.:format)   {:action=>"edit", :controller=>"votes"} 
        vote GET /votes/:id(.:format)     {:action=>"show", :controller=>"votes"} 
         PUT /votes/:id(.:format)     {:action=>"update", :controller=>"votes"} 
         DELETE /votes/:id(.:format)     {:action=>"destroy", :controller=>"votes"} 
       comments GET /comments(.:format)     {:action=>"index", :controller=>"comments"} 
         POST /comments(.:format)     {:action=>"create", :controller=>"comments"} 
      new_comment GET /comments/new(.:format)    {:action=>"new", :controller=>"comments"} 
      edit_comment GET /comments/:id/edit(.:format)   {:action=>"edit", :controller=>"comments"} 
       comment GET /comments/:id(.:format)    {:action=>"show", :controller=>"comments"} 
         PUT /comments/:id(.:format)    {:action=>"update", :controller=>"comments"} 
         DELETE /comments/:id(.:format)    {:action=>"destroy", :controller=>"comments"} 
        tags GET /tags(.:format)      {:action=>"index", :controller=>"tags"} 
         POST /tags(.:format)      {:action=>"create", :controller=>"tags"} 
       new_tag GET /tags/new(.:format)     {:action=>"new", :controller=>"tags"} 
       edit_tag GET /tags/:id/edit(.:format)    {:action=>"edit", :controller=>"tags"} 
        tag GET /tags/:id(.:format)     {:action=>"show", :controller=>"tags"} 
         PUT /tags/:id(.:format)     {:action=>"update", :controller=>"tags"} 
         DELETE /tags/:id(.:format)     {:action=>"destroy", :controller=>"tags"} 
        events GET /events(.:format)     {:action=>"index", :controller=>"events"} 
         POST /events(.:format)     {:action=>"create", :controller=>"events"} 
       new_event GET /events/new(.:format)    {:action=>"new", :controller=>"events"} 
       edit_event GET /events/:id/edit(.:format)   {:action=>"edit", :controller=>"events"} 
        event GET /events/:id(.:format)    {:action=>"show", :controller=>"events"} 
         PUT /events/:id(.:format)    {:action=>"update", :controller=>"events"} 
         DELETE /events/:id(.:format)    {:action=>"destroy", :controller=>"events"} 
      relationships POST /relationships(.:format)    {:action=>"create", :controller=>"relationships"} 
      relationship DELETE /relationships/:id(.:format)   {:action=>"destroy", :controller=>"relationships"} 
        root  /(.:format)       {:controller=>"pages", :action=>"subscribed"} 
       contact  /contact(.:format)     {:controller=>"pages", :action=>"contact"} 
        about  /about(.:format)      {:controller=>"pages", :action=>"about"} 
        live  /live(.:format)      {:controller=>"pages", :action=>"home"} 
        voted  /voted(.:format)      {:controller=>"pages", :action=>"highest_voted"} 
        signup  /signup(.:format)     {:controller=>"users", :action=>"new"} 
+0

Sử dụng liên kết này để signout [Đăng xuất Giải quyết vấn đề cho Devise] [1]: http://stackoverflow.com/questions/6557311/no-route-matches-users-sign-out-devise-rails-3 –

Trả lời

27

Trên thực tế, bỏ qua câu trả lời trước của tôi và cố gắng này:

<li><%= link_to "Sign out", destroy_user_session_path, :method => :delete %></li> 
+0

Tôi hiện đang ở xa máy tính của mình và không thể kiểm tra điều này. Tuy nhiên, tôi sẽ kiểm tra nó ngay sau khi tôi về nhà. Cảm ơn một lần nữa :) – Spencer

+0

Không sao cả. Có vẻ như Devise không tạo ra một phương thức để đăng xuất, chỉ cần xóa. Các tài liệu nói nó nên, vì vậy không chắc chắn lý do tại sao nó không. Nhưng nó * nên * làm việc :-) – Slick23

+1

Điều này là hoàn toàn - tuyến đường muốn xóa phương thức, chứ không phải phương thức get. 'destroy_user_session DELETE /users/sign_out(.:format) {: action =>" hủy ",: controller =>" devise/sessions "} ' – DGM

2

Vấn đề có thể là trong tập tin routes.rb của bạn. Bạn cần định tuyến user/signout một cách thích hợp và cần phải ở trên tuyến đường cho người dùng của bạn, bởi vì tuyến đường hoạt động từ trên xuống. Nếu bạn đăng tệp tuyến đường của mình, tôi có thể trợ giúp thêm.

Bạn có thể có một số resources :users phía trên devise_for :users của mình không?

Tôi đoán bạn cũng có thể thử xác định phạm vi các tuyến đường devise:

devise_scope :users do 
     get "sign_out", :to => "devise/sessions#destroy" 
    end 
+0

Devise được cho là để chứng minh Tôi tự nghĩ rằng con đường đó? Theo lần chỉnh sửa gần đây nhất của tôi, tôi chỉ liên kết đến tuyến đường phát sinh mặc định để kết thúc phiên. – Spencer

+0

Tôi cũng đăng các tập tin tuyến đường của mình. – Spencer

+0

Vâng, hãy xem cập nhật của tôi. Đối với một số lý do đường ray nghĩ 'sign_out' là một id cho một tài nguyên người dùng. 'Các tuyến đường rake' cung cấp cho bạn những gì? – Slick23

Các vấn đề liên quan