【问题标题】:displaying markdown in my textarea在我的文本区域中显示降价
【发布时间】:2009-10-24 05:56:13
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: ruby-on-rails ruby bluecloth


    【解决方案1】:

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

    【讨论】:

    • 是的,这是一个好点,我现在可能不得不这样做。我希望不必在每次渲染时都在文本上运行该方法,只需在保存后存储 html。
    • 你提出了一个有趣的观点。我已经通过变通方法更新了我的解决方案。
    • (可选)您可以将呈现的 HTML 存储在 Post 表的单独列中。
    • 是的,我认为存储两者可能是您最好的选择。
    猜你喜欢
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多