0

我在我的 Rails 3 应用程序中通过Tony 的教程第二个教程进行了身份验证。

但我明白了

用户的未定义方法“模型”

它只是从教程中复制/粘贴,我认为这是我的应用程序架构中的问题:)

当我尝试访问 /users/new 时出现错误

4

2 回答 2

0

我无法重现您在我的本地遇到的问题,这是我最好的猜测:@user 存在于您的视图中的唯一原因是您在控制器中调用 load_and_authorize_resource,这是一个创建 @user 的 CanCan 方法目的。这可能是您的问题的根源,因此您可以尝试使用 authorize_resource ,然后在新方法中显式创建 @user 。

以下是我注意到的几件事:

  1. devise 的标准创建用户路径是 /users/sign_up 但您使用的是 /users/new 它指向不属于设计的自定义用户控制器,当使用可确认的设计模块时,这将是非常有问题的,因为它不会创建确认令牌或发送电子邮件。
  2. 您已经为注册创建了一个自定义控制器,但您还没有告诉设计它。您需要devise_for :users, :controllers => { :registrations => "users/registrations" }在您的 routes.rb 文件中执行类似的操作,以便设计使用您的控制器。
  3. 一旦您进入注册页面进行加载,您需要将 first_name 和 last_name 添加到您的数据库中,否则您将不会收到任何方法错误。

在深入探讨您当前的问题之前,我将首先理清这些问题。

在开始添加报告界面之前,可能值得将代码剥离为 Tony 所拥有的并使其正常工作。我看到您的数据库的角色列表为“super_admin”、“global_user”和“internal_user”,但是您在查询之前对字符串调用 camelize,所以我怀疑 CanCan 在您的环境中是否正常工作。

最后一件事,请确保您更改所有密码和您共享的所有内容 - 请查看此帖子以获取要更改的文件列表

于 2011-03-02T07:42:28.910 回答
0

要自定义 Devise 创建的视图,首先在您的应用程序中生成它们。

rails 生成设计:视图

这会导入您需要的所有视图,您可以根据自己的内心内容对其进行自定义。这是来自新用户视图的代码 (/devise/registrations/new.html)

'<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) 做 |f| %>'

您会注意到没有@user - 使用@user 会引发未定义的方法模型错误。

不知道为什么使用资源而不是@user,但希望这会让你继续前进。

于 2011-03-01T23:34:33.297 回答