在我的应用程序上使用Devise注销问题

我正在更新我的应用程序,所以我使用Devise gem进行身份validation。 一切似乎都很有效,除了我似乎无法退出的事实。

我收到错误:

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

我可以将错误追溯到我的用户控制器中的show动作:

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

问题是我不确定为什么它试图为我的用户呈现show动作。 总的来说我的页面有这样的格式

      

根据设计说明,我的注销路径如下所示:

 
  • 如果用户未登录,则应呈现基本上是静态html的启动页面。 有关如何帮助的任何建议? 即使你可以把我放在正确的球场上就问题而言会非常感激。

     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' 

    这是我的佣金路线:

      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"} 

    实际上,忽略我以前的答案并试试这个:

     
  • <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
  • 问题可能在您的routes.rb文件中。 您需要适当地路由user/signout并且它需要位于用户的路线之上,因为路由从上到下工作。 如果您发布路线文件,我可以提供更多帮助。

    你有没有resources :users你的devise_for :users上面的devise_for :users

    我想你也可以尝试确定设计路线:

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