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