从翻译字符串中删除HTML标记

时间:2016-03-01 20:38:21

标签: ruby-on-rails internationalization rails-i18n

我在视图中使用了一些翻译。这些翻译有时会在其中返回非常基本的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 />"

谢谢!

2 个答案:

答案 0 :(得分:4)

您可能想从ActionView :: Helpers :: SanitizeHelper

尝试strip_tags
strip_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"))  %>