Отображение уценки в моем текстовом поле

Я использую BlueCloth для создания html из уценки из контента, который мои пользователи вводят в текстовую область, вот так:

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

...

end

Это прекрасно работает! Я получаю HTML, хорошо хранящийся в базе данных, но как мне показать уценку в текстовой области, когда пользователь редактирует? Я старался:

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

Вывод в моей текстовой области выглядит так:

#<BlueCloth:0x10402d578>

1 ответ

Решение

Документация 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-версию уценки. в то время как @post.markdown возвращает источник уценки.

Другие вопросы по тегам