Rails - Redcloth, как мне преобразовать существующую хрень wysiwyg html?

Я увидел свет, я конвертирую свой сайт в RedCloth, чтобы использовать прекрасную текстильную разметку.

Проблема в том, что в моей базе данных есть html-контент за пару лет, который не является текстильной разметкой. Как мне превратить это в ткань? Есть ли неручной способ?

Если нет, следует ли при выводе контента проверять наличие html, если он есть, то не использовать RedCloth?

пример:

// not sure of best way to check if a string has html
if (@content.description has html)
    <%= @content.description.html_safe %>
else
    <%= RedCloth.new(@content.description).to_html %>
end

Каков рубиновый путь в этом? Помогите новичку! :-)


person jyoseph    schedule 28.01.2011    source источник


Ответы (2)


Я использую Rdiscount для разбора разметки, он работает как с html, так и с текстильным вводом. Я полагаю, что текстиль разрешает html, на самом деле, если я поставлю сильный тег в этом редакторе, это сработает!

что произойдет, если вы просто разберете html и текстиль с помощью redcloth?

<%= RedCloth.new(@content.description).to_html %>
person andrea    schedule 28.01.2011
comment
Он добавляет двойные пробелы, потому что он также обнаруживает разрывы строк как абзацы:/ - person jyoseph; 28.01.2011

Нашел это: http://clothred.rubyforge.org/

А это: https://github.com/jystewart/html2textile

А это: https://github.com/mattt/pricetag

изменить

Я пошел с html2textile. Я установил его, используя инструкцию из этот ТАК вопрос я задал.

Затем я создал задачу в /lib/tasks/app.rake под названием Textile_ize. Это выглядит так:

namespace :db do
  desc "Convert html to textile on desc columns"
  task :textile_ize => :environment do
    puts "Starting Desc"

    contents = Content.all
    contents.each do |c|
                    #desc
        parser = HTMLToTextileParser.new
        parser.feed(c.desc)
        c.desc_textile = parser.to_textile
        c.save
    end

    puts "Finished with Desc"

end

Затем я мог бы запустить rake db:textile_ize и пуф, готово. На самом деле я добавил дополнительный столбец для хранения текстиля и создания html из текстиля с помощью :before_save. Это выглядело так (в моей модели):

before_save :textile_ize

# convert textile to html
def textile_ize
    self.desc = RedCloth.new(self.desc_textile).to_html     
end

Надеюсь, это поможет кому-то там!

person jyoseph    schedule 28.01.2011