Есть ли простой способ сделать это - создать размеченный текст, который показывает изменения между двумя частями текста. Может быть, встроенный помощник? Посмотрел, но не смог найти!
Вы можете сделать это полностью на стороне клиента в JavaScript, используя что-то вроде jsdifflib (http://snowtide.com/jsdifflib).
http://github.com/pvande/differ Вы можете использовать это, которое выполняет diff для строк. Вы должны построить некоторую логику, чтобы отформатировать ее в состояние готовности к выводу. Вероятно, с помощью Builder :: XmlMarkup в качестве помощника.
Также есть: http://github.com/myobie/htmldiff
Что, кажется, выводит разметку, но не очень хорошо документировано.
Что касается встроенного помощника, я не думаю, что в Rails есть что-то встроенное. Есть http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Hash/Diff.html - но в отличие от первого плагина, он используется для хешей, а не для строк.
Для тех, кто ищет ответ сегодня: https://github.com/samg/diffy - самая безопасная ставка. Поскольку другие драгоценные камни и библиотеки, упомянутые здесь, были заброшены с некоторого времени.
Есть два способа:
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