25

私が持っているとしましょう:

@string = "it is a <a href="#">string</a>"

アプリケーションのさまざまな部分で、次の 2 つの方法で使用したいと考えています。

  • クリック可能なリンクで
  • クリック可能なリンクなし (ただし、HTML マークアップは表示されません)

最初のものは、次を使用して実行できますhtml_safe

@string.html_safe

文字列です

どうすれば2番目のものを達成できますか?

文字列です。

4

7 に答える 7

53

You can try this:

ActionView::Base.full_sanitizer.sanitize(@string)

See strip_tags(html).

于 2013-03-06T15:53:24.607 に答える
9

これを試すことができます:

strip_tags(@string)
于 2016-07-18T09:12:10.430 に答える
2

あなたnokogiriは同じことをするために使うことができます。

このSO投稿は物語を語っています。

要するに:

これはXPathのstarts-with関数を使用します:

最初に次のように定義する必要があります。

require 'nokogiri'

item = Nokogiri::HTML('<a href="#">string</a>')
puts item.to_html

上記はhtml出力を与えます。次に、XPathを使用できます。

item.search('//a[not(starts-with(@href, "http://"))]').each do |a|
  a.replace(a.content)
end
puts item.to_html
于 2013-03-06T16:00:07.637 に答える
0

Rails provides a method called strip_links, which seems to do what you want (looking at its name).

According to its APIDock page it is a bit limited. To make it applicable to a/any string you could extend the string class:

class String
  def strip_links
    ActionController::Base.helpers.strip_links(self)
  end
end

So you can use:

@string.strip_links
于 2013-03-06T15:54:17.147 に答える