recaptcha_tags呈现在erb中转义的HTML

时间:2012-11-03 17:31:56

标签: ruby-on-rails-3 recaptcha

我正在从2.3.5将我的应用程序迁移到Rails 3.2.8。一种形式使用reCAPTCHA(在erb文件中)。现在,recaptcha_tags发布的所有HTML标记都是转义HTML。 (即& lt; ...& gt;而不是< ...>)。所以我在HTML页面中看到了标签,而不是reCAPTCHA框。

这是我的erb看起来像。我已经验证了在erb中我把recaptcha标签放在哪里(在form_for内部或外部)并不重要:

register.html.erb

...
<%= recaptcha_tags :public_key => RECAPTCHA_PUBLIC_KEY %>
...

其他事情,比如form_for没有这个问题。它们直接输出HTML。

的Gemfile

gem "recaptcha", :require => 'recaptcha/rails'

提前致谢!

2 个答案:

答案 0 :(得分:1)

Rails 2.3.5和3.X之间的一个主要变化是与跨站点脚本有关的一些变化。您可能希望通过升级到2.3.14并添加rails_xss gem来开始升级。 rails_xss gem(https://github.com/rails/rails_xss)会将HTML安全默认值切换为escape,因此会导致您使用recaptcha_tags查看的问题。这将允许您查看应用中需要将哪些字符串标记为html_safe。

或者,如果recaptcha_tags是唯一的问题,你可以通过告诉rails不要逃避recaptcha_tags来修复它。

类似的东西:

<%= raw recaptcha_tags :public_key => "_________" %>
  • 感谢您做研究。 :)

答案 1 :(得分:1)

原来我需要在recaptcha_tags调用前加上“raw”:

register.html.erb

...
<%= raw recaptcha_tags :public_key => RECAPTCHA_PUBLIC_KEY %>
...