私が持っているとしましょう:
@string = "it is a <a href="#">string</a>"
アプリケーションのさまざまな部分で、次の 2 つの方法で使用したいと考えています。
- クリック可能なリンクで
- クリック可能なリンクなし (ただし、HTML マークアップは表示されません)
最初のものは、次を使用して実行できますhtml_safe
。
@string.html_safe
文字列です
どうすれば2番目のものを達成できますか?
文字列です。
私が持っているとしましょう:
@string = "it is a <a href="#">string</a>"
アプリケーションのさまざまな部分で、次の 2 つの方法で使用したいと考えています。
最初のものは、次を使用して実行できますhtml_safe
。
@string.html_safe
文字列です
どうすれば2番目のものを達成できますか?
文字列です。
これを試すことができます:
strip_tags(@string)
あなた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
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