2

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>
4

1 に答える 1

2

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 バージョンを返すようになりました。@post.markdown はマークダウン ソースを返します。

于 2009-10-24T06:37:57.230 に答える