отображение уценки в моем текстовом поле - PullRequest
2 голосов
/ 24 октября 2009

Я использую 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 Ответ

2 голосов
/ 24 октября 2009

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

...