什么是devise_mapping变量,我该如何包含它?

我正在尝试在我的Rails应用程序中使用Devise实现身份validation(Rails 2.3.8,Devise 1.0.7,在Windows Vista上运行的mongrel)。 但是我收到以下错误:

undefined local variable or method `devise_mapping' for # 

这是我使用自动生成的部分_devise_links.html。

  




有想法该怎么解决这个吗? 我假设devise_mapping变量没有包含在我的视图中,但我该怎么办呢?

我意识到这个问题有点陈旧,但我想我弄清楚了为什么你不能只是渲染那个部分。 您尝试呈现的部分内容是显示在sign_in / sign_up表单下方的链接的部分内容。

如果您想将这些链接添加到您的应用程序, Devise Wiki上的此页面将向您展示如何执行此操作,并且它涉及创建您自己的部分。

您可以向ApplicationHelper添加辅助方法。 确保使用正确的型号名称(在我的情况下是:user代表User模型的User )。

 def devise_mapping Devise.mappings[:user] end def resource_name devise_mapping.name end def resource_class devise_mapping.to end 

2014年1月28日更新

Devise的主分支显示devise_mapping现在存储在请求中:

 # Attempt to find the mapped route for devise based on request path def devise_mapping @devise_mapping ||= request.env["devise.mapping"] end 

resource_name被别名为scope_name 。 有关详细信息,请参阅devise_controller.rb 。

假设有问题的用户类是User,则可以使用Devise.mappings[:user]而不是使用devise_mapping

你在routes.rb文件中有devise_for调用吗?

例如,如果您将其用于User类,那么路由将是:

devise_for:用户

有关详细信息,请参阅https://github.com/plataformatec/devise