问题是simple_captcha无法正常工作。验证码图像未显示。请帮忙。
if simple_captcha_valid?
do something
else
do something else
end
<div class="captcha">
<%= show_simple_captcha(label: "", placeholder: "", code_type: "numeric") %>
</div>
gem 'simple_captcha2', require: 'simple_captcha'
SimpleCaptcha::SimpleCaptchaData Load (1.3ms) SELECT "simple_captcha_data".* FROM "simple_captcha_data" WHERE "simple_captcha_data"."key" = '******' ORDER BY "simple_captcha_data"."id" ASC LIMIT 1
**WARNING: Can't mass-assign protected attributes for SimpleCaptcha::SimpleCaptchaData: key**
答案 0 :(得分:4)
我有同样的问题(使用Rails 3)。但是通过添加
来解决它attr_accessible :key, :value
在我的情况下, simple_captcha_gem_dir 是〜/ .rvm / gems / ruby-1.9.3-p484 / bundler / gems / simple-captcha-2602bf19a63d <登记/> (当然,对于生产,你可以创建一个fork而不是编辑本地gem文件)
答案 1 :(得分:4)
这是另一种解决方案:
将其放入初始值设定项(config/initializers/simple_captcha.rb
)
Rails.configuration.to_prepare do
class SimpleCaptcha::SimpleCaptchaData < ::ActiveRecord::Base
attr_protected
end
end
答案 2 :(得分:1)
看着你的电话<%= show_simple_captcha(:label => "", :placeholder => "", :code_type => "numeric") %>
,好像你正在使用基于控制器的simple_captcha实现
我没有看到您的ApplicationController
代码,但请确保app/controllers/application.rb
ApplicationController < ActionController::Base
include SimpleCaptcha::ControllerHelpers
end
更新模型示例:
class User < ActiveRecord::Base
apply_simple_captcha
end
class User < ActiveRecord::Base
apply_simple_captcha :message => "The secret Image and code were different", :add_to_base => true
end
答案 3 :(得分:1)
我在Rails 4.1.4,Ruby 2.1.2中遇到了同样的问题 我在simple_captcha.rb中使用了以下配置
Rails.configuration.to_prepare do
class SimpleCaptcha::SimpleCaptchaData < ::ActiveRecord::Base
attr_protected :captcha, :captcha_key
end
end
...但
正如我在.rvm/gems/bundler
中的简单验证码控制器中注意到的那样,验证码密钥/值通过params [:captcha_key]和params [:captcha]传递,这会产生问题,因为在视图中我使用了
<%= f.simple_captcha :label => "Enter numbers.." %>
其中params通过params[:MODEL][:captcha]
...这样 现在我只是在控制器中添加了一个set_captcha动作来设置
params[:captcha] = params[:MODEL][:captcha]
params[:captcha_key] = params[:MODEL][:captcha_key]
我正在寻找更好的解决方案,任何想法?