Вопрос

Я использую 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>
Это было полезно?

Решение

Документация Bluecloth не очень хорошо определена. Я не уверен, что есть простой способ конвертировать html = > уценки.

Однако ничто не мешает вам сохранить уценку в вашей базе данных и при необходимости преобразовать ее в 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 возвращает источник уценки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top