2

我正在使用 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:0x10402d578>
4

1 回答 1

2

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 返回降价源。

于 2009-10-24T06:37:57.230 回答