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