Ruby on Rails中.slim文件集成Google ReCaptcha报错及示例代码求助
1. 基础依赖配置
首先确保安装并配置reCAPTCHA的Ruby gem:
- 在
Gemfile中添加:gem 'recaptcha', require: 'recaptcha/rails' - 执行
bundle install安装依赖 - 在
config/initializers/recaptcha.rb中配置密钥(从Google reCAPTCHA控制台获取):
也可以直接用环境变量替代credentials,比如Recaptcha.configure do |config| config.site_key = Rails.application.credentials.recaptcha[:site_key] config.secret_key = Rails.application.credentials.recaptcha[:secret_key] endENV['RECAPTCHA_SITE_KEY']和ENV['RECAPTCHA_SECRET_KEY']
2. 注册页面Slim代码(app/views/users/new.html.slim)
h1 注册新用户 = form_with model: @user, url: users_path do |form| - if @user.errors.any? .alert.alert-danger ul - @user.errors.full_messages.each do |msg| li= msg .form-group = form.label :email = form.email_field :email, class: 'form-control', required: true .form-group = form.label :password = form.password_field :password, class: 'form-control', required: true .form-group = form.label :password_confirmation = form.password_field :password_confirmation, class: 'form-control', required: true # 加入reCAPTCHA验证组件 .form-group = recaptcha_tags - if flash[:recaptcha_error] .text-danger= flash[:recaptcha_error] .form-group = form.submit '注册', class: 'btn btn-primary'
3. 用户控制器代码(app/controllers/users_controller.rb)
class UsersController < ApplicationController def new @user = User.new end def create @user = User.new(user_params) # 验证reCAPTCHA unless verify_recaptcha(model: @user, message: '请完成验证码验证') flash[:recaptcha_error] = '验证码验证失败,请重试' render :new return end if @user.save redirect_to root_path, notice: '注册成功' else render :new end end private def user_params params.require(:user).permit(:email, :password, :password_confirmation) end end
补充说明
- 如果使用reCAPTCHA v3,需要调整标签为
recaptcha_v3_tags,并在控制器中用verify_recaptcha(action: 'signup', minimum_score: 0.5)验证分数 - 确保服务器环境能访问Google reCAPTCHA服务,本地开发如果有墙可能需要代理
内容的提问来源于stack exchange,提问作者x5ud0kn1gh7x
相关产品推荐
相关产品推荐

