Jon*_*der 5 ruby ruby-on-rails
在 Ruby on Rails 中,给定一个字符串,是否可以确定 .html_safe是否已在该字符串上调用?
提问原因:我想编写一个控制器单元测试来验证没有在特定字符串上调用html_safe ,以证明当该字符串稍后呈现到视图中的页面上时,Rails 将转义该字符串(避免可能的 XSS 漏洞)。
我意识到我可以继续在我的测试中实际渲染页面,然后检查渲染的页面正文,但我想知道是否有更直接的方法来做到这一点?
有html_safe?:
s = 'foo'
s.html_safe? #=> false
s = 'foo'.html_safe
s.html_safe? #=> true
Run Code Online (Sandbox Code Playgroud)
ActiveSupport::SafeBuffer请注意,如果您调用“破坏性”方法,则an会恢复为不安全:
s = 'foo'.html_safe
s.html_safe? #=> true
s.capitalize! #=> 'Foo'
s.html_safe? #=> false
Run Code Online (Sandbox Code Playgroud)