我正在使用BlueCloth从我的用户输入文本区域的内容中创建html,如下所示:
def create
@post = Post.new(params[:post]) do |post|
body = BlueCloth.new(post.body)
post.body = body.to_html
end
...
end这个很好用!我可以很好地将html存储在数据库中,但是当用户进行编辑时,如何在文本区域中显示markdown呢?我试过了:
def edit
@post = Post.find(params[:id])
@post.body = BlueCloth.new(@post.body)
@post.body.text
end我的文本区域中的输出如下所示:
#<BlueCloth:0x10402d578>发布于 2009-10-24 14:37:57
Bluecloth的文档定义不是很好。我不确定有没有一种简单的方法来转换html =>标记。
然而,没有什么能阻止你将markdown存储在数据库中,并在必要时将其转换为html。
如果您希望@post.body返回的html是默认值,那么您可以始终覆盖访问器。
class Post < ActiveRecord::Base
...
def body
BlueCloth.new(@body).to_html
end
def markdown
@body
end
end现在@post.body返回html版本的markdown。而@post.markdown则返回markdown源。
https://stackoverflow.com/questions/1617093
复制相似问题