在Rails中显示两个文本体之间的差异

有没有一种简单的方法可以做到这一点 – 创建标记文本,显示两段文本之间的变化。 可能是一个内置助手? 看了但找不到了!

您可以使用jsdifflib( http://snowtide.com/jsdifflib )之类的东西在javascript中完成客户端。

http://github.com/pvande/differ您可以使用它,它对字符串执行差异。 您必须构建一些逻辑以将其格式化为输出就绪状态。 可能在帮助器中使用Builder :: XmlMarkup。

还有: http : //github.com/myobie/htmldiff

这似乎输出了标记 – 但它没有很好的记录。

至于内置帮助器,我认为Rails没有内置任何东西。有http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Diff.html – 但与第一个插件不同,这是用于哈希,而不是字符串。

对于今天寻找答案的人来说: https : //github.com/samg/diffy是最安全的选择。 由于此处提到的其他gem和图书馆已经放弃了一段时间。

有两种方法:

1.也用于非英语字符串

class String def -(other) s1 = self.mb_chars.downcase.chars s2 = other.mb_chars.downcase.chars s1.size >= s2.size ? s1 - s2 : s2 - s1 end end > 'abcde' - 'abc' => ["d", "e"] > 'abc' - 'ac' => ["b"] 

2.来自http://tobyho.com/2011/03/26/string-difference-in-ruby/

 class String def -(other) self.index(other) == 0 ? self[other.size..self.size] : nil end end > 'abcde' - 'abc' => "de" but > 'abc' - 'ac' => nil