undefined method `devise_for' in rails

76
安装 devise 并创建用户模型后,我运行 rake db:migrate 命令,接着运行 rake routes。然后出现了 "undefined method `devise_for' for #" 的错误信息。这个错误是因为什么原因引起的呢?

1
你是否已经在Gemfile中添加了devise?你能检查一下Gemfile.lock中是否也有devise吗? - Dogbert
我的 gem 文件中写着 gem 'devise',:git => 'git://github.com/plataformatec/devise.git'。 - Yeddie
根据您提到的步骤,如果在config/initializers下没有devise.rb文件,您将会遇到此错误。 - Americo Savinon
4个回答

280

安装和配置devise后,请记得重新启动您的rails服务器。


2
如果有疑问,重启服务器。 - Rishi
还需要在 routes.rb 文件中将 devise_for :installs 注释掉。 - Joe Essey
我希望Rails服务器能够监视文件并自动重新加载。虽然会有资源浪费,但在开发过程中这将非常方便! - ankush981

8

如果你在Gemfile文件中指定了Devise gem,只需确保在routes.rb文件中有以下内容:

 devise_for :users

此外,有一个小技巧可以确保正确映射Devise,请在您的应用程序文件夹中运行rails c(Rails应用程序控制台),然后运行以下命令行:
 Devise.mappings.keys

您应该看到:
=> [:user] 

干杯!


嗨Florin,谢谢你的回答。我在我的路由文件中有“devise_for:users”行,但是当我运行Devise.mappings.keys时出现错误。我该如何解决这个问题? - CanCeylan
嗨,能具体说明一下错误吗?除非你已经找到解决方案了! - Florin

2

说实话,我建议你关注这两个Railscasts (Episode 209Episode 210)。第一个教你如何简单易懂地安装Devise,第二个则讲解如何自定义以适应你的应用程序。

我观看了这两集视频,特别是第二个视频,对Devise有了较深入的理解和认识。

最好从头开始学习 - 这样你将会完全掌握Devise并且能够独立安装和使用。

希望这能给你带来帮助,祝你好运。


0
你可能需要执行 bundle install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接