Rails gem用于音译+高亮

时间:2015-12-08 22:08:25

标签: ruby-on-rails

我刚刚在Ruby on Rails中实现了一个搜索页面,并找到了一些非常有用的Rails方法:excerpthighlight

在显示搜索结果时,突出显示非常有用:

> bin/rails console
Loading development environment (Rails 4.2.1)
irb(main):001:0> include ActionView::Helpers::TextHelper
=> Object
irb(main):003:0> highlight "Dusseldorf Open 2015", "duss"
=> "<mark>Duss</mark>eldorf Open 2015"

但它缺乏对音译的支持:

irb(main):002:0> highlight "Düsseldorf Open 2015", "duss"
=> "Düsseldorf Open 2015"

没有标记=(。

一种解决方法是在highlight之前调用音译,但这意味着最终文本缺少变音符号:

irb(main):008:0> include ActiveSupport::Inflector
irb(main):008:0> transliterate "Düsseldorf Open 2015"
=> "Dusseldorf Open 2015"
irb(main):009:0> highlight transliterate("Düsseldorf Open 2015"), "duss"
=> "<mark>Duss</mark>eldorf Open 2015"

对于包含音译的文字而言,这看起来特别糟糕:

irb(main):011:0> highlight transliterate("Yu Nakajima (中島悠)"), "yu"
=> "<mark>Yu</mark> Nakajima (???)"

您可以在github issue的漂亮屏幕截图中看到所有这些内容,所有内容也适用于Rails's excerpt method

我尝试在rubygems上搜索highlightexcerpt,但无济于事。正在搜索&#34;突出显示&#34;只需提出大量突出解决方案的代码。我没有找到这个问题的社区解决方案,还是一个不存在?

1 个答案:

答案 0 :(得分:0)

在没有找到任何解决这个问题的方法之后,我决定创建一个名为translighterate的自己的宝石来处理这个问题。

对于摘录,我们最终实现了这一点(尽管将此代码放入我前面提到的translighterate gem中可能是有意义的)。您可以看到代码here