Rails - redcloth, comment puis-je convertir existants WYSIWYG de merde?
-
27-10-2019 - |
Question
Je l'ai vu la lumière, je convertir mon site sur RedCloth pour utiliser le merveilleux balisage textile.
Le problème est, j'ai quelques années la valeur de contenu HTML dans ma base de données qui ne sont pas le balisage textile. Comment puis-je convertir en textile? Est-il un moyen non-manuel?
Si non, lorsque le contenu en sortie, dois-je vérifier html, si elle est présente alors ne pas utiliser RedCloth?
exemple:
// 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
Quelle est la façon rubis à ce sujet? Aidez un newb! : -)
La solution 2
Trouvé ceci: http://clothred.rubyforge.org/
Et ceci: https://github.com/jystewart/html2textile
Et ceci: https://github.com/mattt/pricetag
modifier
Je suis allé avec html2textile. Je l'ai installé en utilisant l'instruction cette question SO demandai-je.
J'ai ensuite créé une tâche dans textile_ize appelé /lib/tasks/app.rake. Il ressemble à ceci:
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
Je pourrais alors courir rake db:textile_ize
et poof, fait. En fait, j'ajouté une colonne supplémentaire pour stocker le textile et créer html du textile avec :before_save
. Cela ressemblait à ceci (dans mon modèle):
before_save :textile_ize
# convert textile to html
def textile_ize
self.desc = RedCloth.new(self.desc_textile).to_html
end
Espérons que cela aide quelqu'un là-bas!
Autres conseils
J'utilise Rdiscount pour analyser le balisage, il fonctionne aussi bien avec html et entrée textile. Je suppose que le textile permet html, enfait si je mets balise forte dans cet éditeur travail de it!
ce qui se passe si vous Parse simple, HTML et textile avec redcloth?
<%= RedCloth.new(@content.description).to_html %>