【问题标题】:Error: undefined local variable or method `resource_class' when installing omniauth-twitter错误:安装omniauth-twitter时未定义的局部变量或方法`resource_class'
【发布时间】:2013-07-03 03:24:54
【问题描述】:

我正在尝试使用 facebook/twitter 登录,并关注 this railscast

我已将以下内容添加到我的 config/initializers/devise.rb(我确实在其中放入了 Twitter 提供的消费者密钥和消费者密码)。

config.omniauth :twitter, ENV["TWITTER_CONSUMER_KEY"], ENV["TWITTER_CONSUMER_SECRET"]

在我的用户模型中添加“:omniauthable”后,下面会产生这个错误“undefined local variable or method `resource_class' for #”

- if devise_mapping.omniauthable?
  - resource_class.omniauth_providers.each do |provider|

【问题讨论】:

    标签: ruby-on-rails ruby facebook login omniauth


    【解决方案1】:

    如果你运行这个“程序”,你会得到同样的错误:

    resource_class.omniauth_providers.each do |provider|
    end
    

    你必须在某处定义 resource_class。您是 Railscast 的垃圾邮件发送者吗?提供一些花钱看的东西的链接并没有真正的帮助。

    【讨论】:

    • 啊,原谅我,我已经编辑了我从 railscasts 引用的一些内容,不,我不是垃圾邮件发送者,我是订阅会员并且喜欢 Ryan 的视频。我可以将“resource_class”定义为什么?
    • rails 中的“资源”由 db 表表示。 'resource_class' 可能是与该表关联的模型。
    • 看看我刚刚发布的答案,你需要在你的application_helper.rb中定义resource_class
    【解决方案2】:

    我通过删除“ENV[]”括号解决了这个问题:

    config.omniauth :twitter, 'TWITTER_CONSUMER_KEY', 'TWITTER_CONSUMER_SECRET'
    

    并在我的 application_helper.rb 中定义 resource_class

    def resource_class
      devise_mapping.to
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2011-07-24
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多