在实施Rails_admin(并转移到Rails 3.1)之后,退出使用Devise的应用程序。

16 浏览
0 Comments

在实施Rails_admin(并转移到Rails 3.1)之后,退出使用Devise的应用程序。

更新:/* 我通过按照Railscasts #282中描述的设置资产管道的方式,成功解决了这个问题。*/

我在我的应用程序中使用Devise进行身份验证。在添加了Rails_admin gem之后,它运行良好。在此过程中,我也升级到了Rails 3.1,所以问题可能出在升级到3.1上。

在退出登录时,我会得到以下错误信息:

"无法找到id=sign_out的用户"

它追溯到users_controller的show动作中的params:{"id"=>"sign_out"}

退出登录链接位于应用程序布局中:

<%= link_to '用户退出', destroy_user_session_path, :method => :delete %>

相应的路由:

destroy_user_session DELETE /users/sign_out(.:format)  {:action=>"destroy", :controller=>"devise/sessions"}

这个问题似乎类似于:在我的应用程序中使用Devise进行退出登录的问题,只是我指定了删除方法。

接下来,我在Devise中找到了这个方法:

  def after_sign_out_path_for(resource_or_scope)
    root_path
  end

有人能告诉我如何进一步调查吗?即如何找到'resource_or_scope'?在路由中,root_path看起来没问题。

这是我的routes.rb文件内容:

Notebook::Application.routes.draw do

mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'

devise_for :owners

match '/user' => 'users#dashboard', :as => :user_root

match '/customer' => 'customers#dashboard', :as => :customer_root

match 'users/dashboard' => 'users#dashboard'

match 'customers/dashboard' => 'customers#dashboard'

devise_for :users

devise_for :customers

resources :users

resources :customers, :only => [:index, :show, :edit, :update, :destroy]

root :to => 'misc#landing'

end

0