1

簡単な Ruby on Rails アプリを作成しています。文字列である「説明」属性を持つモデルがあります。

この文字列をビューに表示したいのですが、文字列内の単語の一部を特別な音楽フォント (ここにあるものの 1 つ) を使用してレンダリングし、残りは Web サイトのメイン フォントを使用するようにします。問題は、description 属性がデータベースに永続化される単なる文字列であるため、どの単語が特別なフォントを使用する必要があるかを判断する実際の方法がないことです...

私が考えることができる唯一の方法は、単語が特殊フォントを使用する必要があるかどうかをビューに示すことができる独自の「エスケープシーケンス」または「特殊文字」を定義することです。

たとえば、次の文字列があるとします。

cat dog rabbit elephant

「犬」と「象」に特別なフォントを使用させたい場合は、次のように文字列をデータベースに保存できます。

cat ${dog} rabbit ${elephant}

つまり、カスタム エスケープ シーケンスとして「${}」を使用します。

そして、私の見解では、文字列を処理し、エスケープ シーケンスを使用する単語に対して適切な HTML/CSS を生成するヘルパー メソッドが必要です。たとえば、これは私が期待する出力の種類です。

<p>cat <span class="music">dog</span> rabbit <span class="music">elephant</span></p>

これは合理的な解決策のように思えますか? もしそうなら、文字列とエスケープ文字を解析するビュー メソッドをどのように実装しますか? ある種の正規表現を推測していますか?

ある意味では、LaTeX で数式をレンダリングできるようにする方法に似ています。たとえば、LaTeX で特定の文字の数学フォントを有効にするには、次のようにします。

 \mathnormal{some text}
4

1 に答える 1

1

HTML スニペットをデータベースに直接保存するだけです。

<p>cat <span class="music">dog</span> rabbit <span class="music">elephant</span></p>

そうしないと、要求されるたびに HTML 文字列を再作成する必要があります。

それができない場合は、単純な正規表現を使用して${}を html スニペットに置き換えることができます。

string = "cat ${dog} rabbit ${elephant}"
string.gsub /\$\{([^\}]+)\}/, '<span class="music">\1</span>'

    => "cat <span class=\"music\">dog</span> rabbit <span class=\"music\">elephant</span>"
于 2012-10-04T13:55:57.090 に答える