什么是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