新手问题 devise 的使用问题。

MIx · 2013年12月20日 · 最后由 MIx 回复于 2013年12月21日 · 2982 次阅读

使用 devise 必须要自己定义 root_url 吗? 我想实现的功能是在 root 页面直接显示一个登录表单,于是我试了下面几个方法: 1、直接在 routes 中定义 root。

devise_for :users
root :to => 'devise/sessions#new'

结果报错

Could not find devise mapping for path "/".

2、新建一个 controller,让这个 controller 继承自 devise。 weibo_controller.rb

class WeiboController < Devise::SessionsController
  def index
  end
end

routes.rb

devise_for :users
root :to => 'weibo#index'

结果还是上面的报错。 3、参照 github 上面自定义 controller 的方法,创建一个 Users::Seesions controller,并让它继承 devise,然后设置 routes。 sessions_controller.rb

class Users::SessionsController < Devise::SeesionsController
end

routes.rb

devise_for :users, :controllers => { :sessions => "users/sessions" }
root :to => 'users/sessions#new'

结果报错

uninitialized constant Devise::SeesionsController

使用 devise,如果登陆成功,会跳转到 root,就算你第一步不报错,登陆以后难道还去登陆页面吗?

#1 楼 @tyaccp_guojian 谢谢,你可能没太明白我的意思。我是想自定义在 root 页面直接登录,而不是跳转到 devise 的登录页面去登录。

还有一个办法,你自己写个 root route,然后自己写个 view,里面做登陆表单

#3 楼 @tyaccp_guojian 解决了,只要在 routes 里面再写个 devise_scope 就行了。

devise_scope :user do
  root :to => 'users/sessions#new'
end
需要 登录 后方可回复, 如果你还没有账号请 注册新账号