HTML/ERB と MD の組み合わせであるモデル オブジェクト テキストに入力できるブログ アプリを作成しようとしています。その一部は文字通りの公開を目的としており、一部はレンダリング/実行を目的としています。
理想的には、バックティックまたは Markdown/Redcarpet のようなものを使用して、コードとして公開したいテキストの輪郭を描くだけで、残りの HTML/ERB が実行されます。言い換えれば、この (実際の例、コンテンツとは関係のない) テキストを Post モデルに入力する必要があります。
Take a look at the below strangely named cow, and imagine sorting through all 93 packages of ground meat.
<%= image_tag('MeatUp Log.png', class: 'blog_photo') %>
Since every package was associated with a given user and had an expected and actual weight, butchers had to comb through long lists of cuts (for cows, as MeatUp broke them down, there were 22 different cuts, totaling hundreds of packages), to find the right one to update after they weighed it.
To simplify the process both visually and practically, I looked into a simple Javascript expand/collapse function, and ended up homebrewing a neater, more adaptable version from something I found in a blog.
<div class="codebox">
expand.js.coffee
```
jQuery ->
$('.cl .bundle').on 'click', (e) ->
e.preventDefault()
$collapse = $(@).closest('.collapse-group').find('.collapse')
$collapse.collapse 'toggle'
```
</div>
次のようになります。
その代わり。現在、次のようになっています。
ここで 2 つの問題があります。1) バッククォートで囲まれていないにもかかわらず、ERB が表示されますが、レンダリングされません。2) HTML は表示から消えますが、レンダリングもされません。フォーマット (上の青いコードボックス) のためにそこにありますが、読み取られないように見えます。
基本的には、マークダウンに Redcarpet を使用し、コードのカラーリングにPygmentsを使用するというアドバイスに従っていますが、このプロセスができるだけ簡単であり、実行されたコードと実行されていないコードの両方をそこに含めることができるようにしたいと考えています。バッククォートを使用するだけです。
私のapplication_helperで「.html_safe」を取り出してみましたが、それは物事を狂わせるだけです:
class HTMLwithPygments < Redcarpet::Render::HTML
def block_code(code, language)
Pygments.highlight(code, lexer: language)
end
end
def markdown(text)
renderer = HTMLwithPygments.new(hard_wrap: true, filter_html: true)
options = {
autolink: true,
no_intra_emphasis: true,
fenced_code_blocks: true,
lax_html_blocks: true,
strikethrough: true,
superscript: true
}
Redcarpet::Markdown.new(renderer, options).render(text).html_safe // This guy
end
何か案は?
編集 -ここの指示に従って、HTML を 1 行で区切ってみました。それは上記の消失の問題を引き起こすだけです。これは Redcarpet の避けられない機能ですか? MDのアイデアを破棄する必要がありますか? もしそうなら、プレーンテキストとERBの両方をフィードできる単純な投稿モデルの代替提案はありますか?