【问题标题】:Undefined local variable or method with Rails & Devise使用 Rails 和 Devise 未定义的局部变量或方法
【发布时间】:2018-11-29 11:27:50
【问题描述】:
Rails 3.2
Devise
Devise security extensions

在我的 app/views/users/shared/_links.slim 中,我有:

- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'
  li.home-nav= link_to t('users.shared.didnt_received_unlock'), new_unlock_path(resource_name)

在我的用户模型中,我有:

devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable,  :invitable, :confirmable,
     :password_expirable, :password_archivable, :session_limitable, :expirable, :secure_validatable,
     :lockable, :timeoutable

当用户尝试登录时,我收到以下错误:

NameError(未定义的局部变量或方法resource_class' for #<#<Class:0x000000098a1598>:0x000000092d4b60>): app/views/users/shared/_links.slim:5:in_app_views_users_shared__links_slim___1531266065579142927_70700660' app/views/layouts/application.html.slim:96:in _app_views_layouts_application_html_slim___452855375923455357_79638440' app/middleware/catch_json_parse_errors.rb:8:incall'

有什么想法吗?

【问题讨论】:

  • resource_class 在您的_links.slim 视图中不可用。请改用User.unlock_strategy_enabled?(:email)
  • 这行得通。我曾尝试过 current_user.unlock_strategy_enabled,认为它会起作用,但它没有。请将评论更改为答案,这样我就可以给你功劳了

标签: ruby-on-rails devise


【解决方案1】:

resource_class 仅在 Devise 控制器中可用,在您的 _links.slim 视图中不可用。请改用User.unlock_strategy_enabled?(:email)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 2014-07-06
    相关资源
    最近更新 更多