【问题标题】:NoMethodError in AuthenticationsController#create undefined method `RandomString' for String:ClassAuthenticationsController 中的 NoMethodError#create undefined method `RandomString' for String:Class
【发布时间】:2011-10-04 18:48:54
【问题描述】:

我按照本教程在 devise+mongoid 中安装omniauth:

https://github.com/fertapric/rails3-mongoid-devise-omniauth/wiki/OmniAuth-Installation-Tutorial

我设计了 1.4.5 + omniauth 0.3.0 + rails 3.1.0。

我的 devise.rb 中有下一条信息:

config.omniauth :facebook, 'My_CONSUMER_KEY', 'MY_CONSUMER_SECRET', :scope => 'user_hometown, user_about_me, email'

在本教程中,此配置会创建一个 initializers/omniauth.rb 文件。

当我返回 facebook 回调时,我发现了这个错误:

NoMethodError in AuthenticationsController#create

undefined method `RandomString' for String:Class

app/models/user.rb:39:in `apply_trusted_services'
app/models/user.rb:23:in `apply_omniauth'
app/controllers/authentications_controller.rb:33:in `create_new_omniauth_user'
app/controllers/authentications_controller.rb:16:in `create'

我在 lib/string_extensions.rb 中也创建了一个文件,代码如下:

module StringExtensions
  def self.included(base) 
    String.extend StringExtensions::ClassMethods
  end
  module ClassMethods
    RAND_CHARS = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789"
    def RandomString(len)
      rand_max = RAND_CHARS.size
      ret = ""
      len.times{ ret << RAND_CHARS[rand(rand_max)] }
      ret
    end
  end
end

我的问题是什么

【问题讨论】:

  • 请注意,Ruby 中的方法名称不应使用大写字母。常量是ALL_CAPS,类是CapsFirst,方法应该是lower_case

标签: ruby-on-rails devise mongoid omniauth


【解决方案1】:

您需要在 application.rb 中启用模块加载

【讨论】:

  • 谢谢,我在 config/aplication.rb 中启用了这个: config.autoload_paths += %W(#{config.root}/extras) require 'string_extensions' include StringExtensions 但现在我明白了我的网页中的下一个错误(网页呈现错误):网址为:localhost:3000/sign_up#_=_ 并在注册表单上显示红色警报:认证失败!!
【解决方案2】:

你可以把它放在config/initializers中,它会自动加载,否则你将不得不使用混乱的requirelib/手动加载它

【讨论】:

  • 感谢您的回复,现在的问题是我发现错误:Authentication FAIL!!我不知道为什么现在以红色形式显示此错误
  • 听起来是个不同的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 2015-03-19
  • 2016-08-13
  • 1970-01-01
相关资源
最近更新 更多