我在视图中使用了一些翻译。这些翻译有时会在其中返回非常基本的HTML标记 -
var container = document.querySelector('#grid');
var masonry = new Masonry(container, {
columnWidth: 100,
itemSelector: '.grid-item'
});
(旁注:我正在使用精彩的it gem轻松嵌入标记,特别是链接,在我的翻译中)
如果我想在某些情况下删除HTML标记,例如我在RSpec测试中使用翻译字符串时会怎样。是否有HTML strp功能可以编译和删除该标记?
t("some.translation")
#=> "This is a translation <a href="/users">with some</a> markup<br />"
谢谢!
答案 0 :(得分:4)
您可能想从ActionView :: Helpers :: SanitizeHelper
尝试strip_tagsstrip_tags("Strip <i>these</i> tags!")
# => Strip these tags!
strip_tags("<b>Bold</b> no more! <a href='more.html'>See more here</a>...")
# => Bold no more! See more here...
strip_tags("<div id='top-bar'>Welcome to my website!</div>")
# => Welcome to my website!
答案 1 :(得分:1)
取决于您使用它的位置。
strip_tags 方法无法在控制器,模型或库
中运行在你正在使用它的类中出现了一个关于 white_list_sanitizer 的错误。
要解决此问题,使用:
ActionController::Base.helpers.strip_tags('string')
要缩短此功能,请在初始化程序中添加以下内容:
class String
def strip_tags
ActionController::Base.helpers.strip_tags(self)
end
end
然后使用:
调用它'string'.strip_tags
但如果您只需要在 VIEW 中使用它,只需:
<%= strip_tags(t("some.translation")) %>