Отображение уценки в моем текстовом поле
Я использую 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 возвращает источник уценки.