Ruby on rails 未定义的局部变量或方法验证\u recaptcha

Ruby on rails 未定义的局部变量或方法验证\u recaptcha,ruby-on-rails,recaptcha,Ruby On Rails,Recaptcha,我正在按照验证码执行,但我在最后一步被卡住了。这是我的控制器: bug_report = BugReport.new(bug_report_params) if verify_recaptcha if bug_report.valid? bug_report.save! #render success else #throw error end else

我正在按照验证码执行,但我在最后一步被卡住了。这是我的控制器:

 bug_report = BugReport.new(bug_report_params)
      if verify_recaptcha
        if bug_report.valid?
          bug_report.save!
          #render success
        else
          #throw error
        end
      else
         #Invalid captcha
      end
我在说:
未定义的局部变量或方法verify\u recaptcha

其他代码如下:

看法 recaptcha.rb 我在params中获得以下数据:

{
utf8: "✓",
g-recaptcha-response: "Long text here",
commit: "Submit",
controller: "api/v1/bug_reports",
action: "index"
}

请指导我如何修复它。

从您的评论来看,您的rails应用程序在
application.rb
中设置了
config.api_only=true
。要查看它的实际功能列表,请查看文档

这样做的一个结果是,
ApplicationController
将继承自
ActionController::API
,而不是
ActionController::Base
。但是如果你看一下recaptcha,包含在
ActionController::Base

因此,您可以直接在
应用程序控制器
中包含
Recaptcha::Verify
模块

# app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  include Recaptcha::Verify
...
end
#app/controllers/application_controller.rb
类ApplicationController
根据您的评论,您的rails应用程序似乎在
application.rb
中设置了
config.api_only=true
。要查看它的实际功能列表,请查看文档

这样做的一个结果是,
ApplicationController
将继承自
ActionController::API
,而不是
ActionController::Base
。但是如果你看一下recaptcha,包含在
ActionController::Base

因此,您可以直接在
应用程序控制器
中包含
Recaptcha::Verify
模块

# app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  include Recaptcha::Verify
...
end
#app/controllers/application_controller.rb
类ApplicationController
您的控制器是否继承自
ActionController::Base
并且在添加gem后是否重新启动了rails服务器?否,我的控制器扩展了扩展ApplicationController的ApiController,是的,我已重新启动服务器。您的应用程序控制器继承自?ActionController::API基本上我只创建了我的项目API,这里我添加了视图用于测试。您的控制器是否继承自
ActionController::Base
和添加gem后是否重新启动了rails服务器?否,我的控制器扩展了扩展ApplicationController的ApiController,是的,我已重新启动服务器。而您的应用程序控制器继承自?ActionController::API基本上我只创建了我的项目API,在这里我添加了视图用于测试。当我尝试此操作时,包括Recaptcha::验证它是否显示错误类型错误:错误的参数类型字符串(预期为模块),然后我将其更改为包含Recaptcha,现在显示名称错误:未初始化的常量RecaptchaIt可能是因为我在整个项目中找不到任何名为Recaptcha的模块。在删除
require:“Recaptcha/rails”后,是否可以再次尝试包含它
从Gemfile?然后我必须删除recaptcha.rb表单初始值设定项,否则它将抛出未初始化的常量recaptcha(NameError)。我应该把它拿走吗?它扔了吗?我不认为会。当我尝试此方法时,include Recaptcha::Verify显示错误类型错误:错误的参数类型字符串(预期模块)然后我将其更改为包含Recaptcha现在它显示NameError:未初始化的常量RecaptchaIt可能是因为我在整个项目中找不到任何名为Recaptcha的模块。在删除
require:“Recaptcha/rails”后,是否可以再次尝试包含它
从Gemfile?然后我必须删除recaptcha.rb表单初始值设定项,否则它将抛出未初始化的常量recaptcha(NameError)。我应该把它拿走吗?它扔了吗?我认为不会。
{
utf8: "✓",
g-recaptcha-response: "Long text here",
commit: "Submit",
controller: "api/v1/bug_reports",
action: "index"
}
# app/controllers/application_controller.rb
class ApplicationController < ActionController::API
  include Recaptcha::Verify
...
end