سؤال

أنا أستخدم BlueCloth لإنشاء HTML من Markdown من المحتوى الذي يدخله المستخدمون في Textarea مثل هذا:

def create
  @post = Post.new(params[:post]) do |post|
    body = BlueCloth.new(post.body) 
    post.body = body.to_html
  end

...

end

هذا يعمل بشكل رائع! أحصل على HTML المخزنة في قاعدة البيانات بشكل جيد ، ولكن كيف يمكنني إظهار التخفيض في Textarea عندما يقوم المستخدم بتحرير؟ حاولت:

def edit
  @post = Post.find(params[:id])
  @post.body = BlueCloth.new(@post.body)
  @post.body.text
end

يشبه الإخراج في Textarea:

#<BlueCloth:0x10402d578>
هل كانت مفيدة؟

المحلول

وثائق BlueCloth غير محددة جيدًا. لست متأكدًا من وجود طريقة سهلة لتحويل HTML => Markdown.

ومع ذلك ، لا يوجد شيء يمنعك من تخزين التخفيض في قاعدة البيانات الخاصة بك ، وتحويله إلى HTML حسب الضرورة.

إذا كنت تريد أن يكون HTML هو الافتراضي الذي تم إرجاعه بواسطة @post.body ، فيمكنك دائمًا تجاوز الملحق.

class Post < ActiveRecord::Base
  ...
  def body
    BlueCloth.new(@body).to_html
  end

  def markdown
    @body
  end
end

الآن @post.body إرجاع إصدار HTML من Markdown. بينما @post.markdown إرجاع مصدر Markdown.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top