【发布时间】:2017-06-14 09:46:39
【问题描述】:
我正在开发 Rails 5.0.3 应用程序(使用 Ruby 2.4.1)并尝试在我网站上的联系我们表单上安装 Recaptcha v2 功能。
我收到以下错误:-
/config/initializers/recaptcha.rb:1:in `<top (required)>': uninitialized constant Recaptcha (NameError)
from /home/[$user]/.rvm/gems/ruby-2.4.1/gems/railties-5.0.3/lib/rails/engine.rb:648:in `block in load_config_initializer'
为了实现该功能,我在此处遵循了 recaptcha gem 的文档https://github.com/ambethia/recaptcha
在我的 gemfile 中我有:-
gem 'dotenv-rails', require: 'dotenv/rails-now'
gem 'recaptcha', require: 'recaptcha/rails'
在我的 .env 文件(在根文件夹中)我有这个:-
RECAPTCHA_SITE_KEY= xxxxxxxxxxxxxxxxxxxxxxxxxx
RECAPTCHA_SECRET_KEY= xxxxxxxxxxxxxxxxxxxxxxxxx
我在 config/initializers/recaptcha.rb 中有这个:-
Recaptcha.configure do |config|
config.site_key = ENV['RECAPTCHA_SITE_KEY']
config.secret_key = ENV['RECAPTCHA_SECRET_KEY']
end
在我看来是这样的:-
.
.
.
<%= f.label :content %>
<%= f.text_area :content, class: 'form-control' %>
<br>
<%= recaptcha_tags %>
<br>
<div class="actions">
<%= f.submit "Send", class: "btn btn-primary center-block" %>
</div>
<% end %>
.
.
.
在我的控制器中,我有这个:-
def create
@message = Message.new(message_params)
if !verify_recaptcha(model: @message) && @message.valid?
.
.
.
正如我从错误中看到的,初始化程序没有加载。我不是初始化程序方面的专家,所以我不知道它们是如何加载的,也不知道我需要做什么才能让它们加载。
【问题讨论】:
-
你做了捆绑安装吗?
-
几次。我也试过重启服务器。
-
尝试在初始化文件中要求“recaptcha”
-
我不知何故让它工作,而不需要'需要'recaptcha''行。我的存储库有问题,因为我在 Dropbox 中有该文件夹。我在 Dropbox 外部的一个新文件夹中从 git 进行了新的提取,现在这个错误消失了,我可以启动 rails 服务器了。但是我在尝试推送到 heroku 时遇到了一个新错误。我在这里开始了一个单独的问题 - stackoverflow.com/questions/44546377/…
-
如果 Google 在 2019 年 6 月之后因同样的错误将您带到此页面,请注意在 recaptcha v5.0.0 版本中发生的重命名类:github.com/ambethia/recaptcha/blob/master/CHANGELOG.md