我在我的 Rails 3 应用程序中通过Tony 的教程和第二个教程进行了身份验证。
但我明白了
用户的未定义方法“模型”
它只是从教程中复制/粘贴,我认为这是我的应用程序架构中的问题:)
当我尝试访问 /users/new 时出现错误
我无法重现您在我的本地遇到的问题,这是我最好的猜测:@user 存在于您的视图中的唯一原因是您在控制器中调用 load_and_authorize_resource,这是一个创建 @user 的 CanCan 方法目的。这可能是您的问题的根源,因此您可以尝试使用 authorize_resource ,然后在新方法中显式创建 @user 。
以下是我注意到的几件事:
devise_for :users, :controllers => { :registrations => "users/registrations" }
在您的 routes.rb 文件中执行类似的操作,以便设计使用您的控制器。在深入探讨您当前的问题之前,我将首先理清这些问题。
在开始添加报告界面之前,可能值得将代码剥离为 Tony 所拥有的并使其正常工作。我看到您的数据库的角色列表为“super_admin”、“global_user”和“internal_user”,但是您在查询之前对字符串调用 camelize,所以我怀疑 CanCan 在您的环境中是否正常工作。
最后一件事,请确保您更改所有密码和您共享的所有内容 - 请查看此帖子以获取要更改的文件列表。
要自定义 Devise 创建的视图,首先在您的应用程序中生成它们。
rails 生成设计:视图
这会导入您需要的所有视图,您可以根据自己的内心内容对其进行自定义。这是来自新用户视图的代码 (/devise/registrations/new.html)
'<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) 做 |f| %>'
您会注意到没有@user - 使用@user 会引发未定义的方法模型错误。
不知道为什么使用资源而不是@user,但希望这会让你继续前进。