1

我正在编写一个简单的 Ruby on Rails 应用程序。我有一个带有“描述”属性的模型,它是一个字符串。

我想在视图中显示此字符串,但字符串中的某些单词使用特殊的音乐字体(位于此处的字体之一)呈现,其余的则使用网站的主要字体。问题是,由于描述属性只是一个持久化到数据库中的字符串,没有真正的方法来判断哪些单词应该使用特殊字体......

我能想到的唯一方法是定义我自己的“转义序列”或“特殊字符”,这将允许我向视图指示一个单词是否应该使用特殊字体。

例如,假设我有以下字符串:

cat dog rabbit elephant

如果我想让“dog”和“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

You could just store the html snippet directly in your database.

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

Otherwise, you would have to remake the HTML string every time it was requested.

If that's not an option, you could use a simple regex to replace the ${} with an html snippet.

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 回答