2011-03-01 52 views
0

我在我的Rails 3应用程序中进行了身份验证,休息时间为Tony's tutorial和此second tutorial用户未定义的方法“模型”

,但我得到

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

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

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

+0

我有同样的问题,我不记得解决方案。你能否将这个应用程序打包成一个zip文件,以便我们可以轻松下载它?我也跟着那个教程,你可以在这里找到我的代码,如果它有任何用处https://github.com/augusto/devise-cancan-spike – Augusto 2011-03-01 11:31:59

+0

http://anticdesign.info/work/cancan-devise.zip – dormitkon 2011-03-01 11:36:03

+0

对不起,我的意思是整个项目,因为我认为它与项目的gem文件有关。 – Augusto 2011-03-01 11:41:08

回答

0

要定制的设计创建第一个产生他们在您的应用程序的意见。

轨生成设计:观点

这将导入您需要的所有意见,并可以将它们自定义你的心内容。这是来自新用户视图的代码(/devise/registrations/new.html)

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

你会注意到没有@user - 这是使用@user抛出未定义的方法模型错误。

不知道为什么资源被使用,而不是@user,但希望这会让你去。

+0

我试过这个,但没有成功。无论如何,谢谢你。 – dormitkon 2011-03-02 00:11:12

0

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

这里有一对夫妇的事情,我注意到:

  1. 标准创建用户路径遗赠是/用户/ sign_up但您使用/用户/新指向您的自定义用户控制器,它不设计的一部分,当使用诸如可确认的设计模块时,这将是非常有问题的,因为它不会创建确认令牌或发送电子邮件。
  2. 您已经创建了一个用于注册的自定义控制器,但是您尚未将其设计告知设计。您需要在您的routes.rb文件中执行诸如devise_for :users, :controllers => { :registrations => "users/registrations" }之类的设计以使用您的控制器。
  3. 一旦你到达注册页面加载,你需要添加first_name和last_name到你的数据库,否则你将不会有方法错误。

我会在深入解决目前的问题之前先理清这些问题。

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

最后一件事,请确保您更改了所有密码以及您共享的所有内容 - 请参阅this post for a list of files to change

相关问题