0

在我的 rails 博客应用程序中,我可能会编写 post body markdown(我使用 redcarpet 进行 markdown 解析,使用 CodeRay 进行语法高亮显示)。

我有一个搜索页面,它返回包含搜索查询字符串的帖子。

我使用rails 助手来突出显示查询:

@post.body = highlight(@post.body, @query_phrase, highlighter: '<span class=\'highlighted\'>\1</span>'))

我使用 css 将突出显示的类的背景设置为黄色。

帖子正文存储为在文本区域中输入的内容(作为降价,未转换),并且在呈现只读视图(如 posts#show 和搜索结果)时处理降价。

问题是当我搜索“ruby”这个词时,输入的降价使用带有语言名称的防护代码块来突出显示语法,搜索结果会变得混乱。

这是正文降价:

ruby

```ruby
puts "Hello, world"
```

这是搜索结果截图:

搜索结果截图

这是可以理解的,因为围栏代码块之后的匹配 'ruby' 被 span 和 class 包裹以进行突出显示,但是 markdown 现在看到

```<span class='highlighted'>ruby</span> 

并按原样输出跨度。

类似的问题也发生在代码中,代码中的匹配项也会被包装并与搜索结果中的 span 一起输出。

如何避免这种情况,并让搜索突出显示输出降价中的实际短语,最好不必保留降价的 html 输出?

4

1 回答 1

1

你应该先把它转成 HTML,然后通过highlight.

于 2015-01-08T20:50:27.327 回答