2011-04-16 176 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已保存,現在可以登錄。萬歲!