在我的textarea中显示降价

我正在使用BlueCloth从我的用户进入textarea的内容中通过markdown创建html,如下所示:

def create @post = Post.new(params[:post]) do |post| body = BlueCloth.new(post.body) post.body = body.to_html end ... end 

这很棒! 我得到了数据库中存储的html,但是如何在用户编辑时在textarea中显示markdown? 我试过了:

 def edit @post = Post.find(params[:id]) @post.body = BlueCloth.new(@post.body) @post.body.text end 

我的textarea输出如下:

 # 

Bluecloth的文档定义不明确。 我不确定是否有一种简单的方法来转换html => markdown。

但是,没有什么能阻止您将markdown存储在数据库中,并根据需要将其转换为html。

如果你想让html成为@ post.body返回的默认值,那么你总是可以覆盖访问者。

 class Post < ActiveRecord::Base ... def body BlueCloth.new(@body).to_html end def markdown @body end end 

现在@ post.body返回markdown的html版本。 而@ post.markdown返回降价源。