2011-04-16 129 views
5

我正在使用Devise设置用户身份验证,但我很难让用户登录。设计:用户未登录

表单正确呈现以供登录和注册。问题是,当我点击提交时,我得到一个(没有路由匹配“/会话/用户”)错误。如果我去注册表单,填写字段,然后提交,那么我得到同样的错误。但是,当我回到根网址(页面#home)时,用户登录。如果我注销并尝试使用相同的用户凭据登录,则会收到no route matches错误,并且用户未签名在所有。

我想解决这个问题,以便注册/登录重定向到页面#home,并且用户从登录表单登录。有任何想法吗?

请让我知道是否需要任何额外的信息,非常感谢您的帮助!

+0

您正在使用哪个版本的Rails和Devise?你也可以发布你的routes.rb文件吗? – 2011-04-16 23:40:44

+0

Rails:3.0.5,Devise 1.2.1,routes.rb http://min.us/mTTAspPGXiM8u#1(缺少表示图片的后缀)注意:'session/user'这个匹配被注释掉了,但是当我取消注释时得到一个'无法找到路径设计映射“/会话/用户”错误。我很欣赏你的编码智慧! – ahuang7 2011-04-17 00:07:28

+0

我对你正在创建的会话和用户路径的目的有点困惑。你想覆盖设计代码,还是只是试图为这些方法添加一些功能?如果你只需要添加一点功能,我会建议扩展现有的控制器,做你的代码,然后调用超级,所以设计可以做到这一点。也不知道这会有什么影响,但约定表示有根在路由文件的末尾(http://guides.rubyonrails.org/routing.html#using-root)。 – 2011-04-17 00:33:44

回答

0

我有一个旧会话控制器,删除它,重新启动服务器。然后,我在登录时遇到了'设计中的BCrypt :: Errors :: InvalidHash/sessionsController#create'错误,这与空的encrypted_pa​​ssword db列有关。我查看了用户模型,并注释了attr_accessor:password并创建了一个新用户,该用户的encrypted_pa​​ssword已保存,现在可以登录。万岁!