我刚刚在Ruby on Rails中实现了一个搜索页面,并找到了一些非常有用的Rails方法:excerpt和highlight。
在显示搜索结果时,突出显示非常有用:
> 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上搜索highlight和excerpt,但无济于事。正在搜索&#34;突出显示&#34;只需提出大量突出解决方案的代码。我没有找到这个问题的社区解决方案,还是一个不存在?
答案 0 :(得分:0)
在没有找到任何解决这个问题的方法之后,我决定创建一个名为translighterate
的自己的宝石来处理这个问题。
对于摘录,我们最终实现了这一点(尽管将此代码放入我前面提到的translighterate
gem中可能是有意义的)。您可以看到代码here。