たくさんのチュートリアルが浮かんでいますが、それらは不完全であるか、完全に最新ではないか、完全に機能していないようです。
これが私がやったことです。
Gemfile:
gem 'rouge'
gem 'redcarpet'
次に、次を作成しましたconfig/initializer/rouge.rb
:
require 'rouge/plugins/redcarpet'
次に、というファイルを作成しましたapp/assets/stylesheets/rouge.css.erb
<%= Rouge::Themes::Github.render(:scope => '.highlight') %>
次に、app/helpers/application_helper.rb
にこれを追加しました:
module ApplicationHelper
class HTML < Redcarpet::Render::HTML
include Rouge::Plugins::Redcarpet
def block_code(code, language)
Rouge.highlight(code, language || 'text', 'html')
end
end
def markdown(text)
render_options = {
filter_html: true,
hard_wrap: true,
link_attributes: { rel: 'nofollow' }
}
renderer = HTML.new(render_options)
extensions = {
autolink: true,
fenced_code_blocks: true,
lax_spacing: true,
no_intra_emphasis: true,
strikethrough: true,
superscript: true
}
Redcarpet::Markdown.new(renderer, extensions).render(text).html_safe
end
end
それから私の中show.html.erb
で、私はこれをしました:
<%= markdown(@question.body) %>
しかし、それは文字通りうまくいきません。ruby
次のようなコード スニペットが出力されます。
このコード スニペットを Github のようにフォーマットするにはどうすればよいですか? または、最初のステップでさえフォーマットするだけで、フォーマットを微調整するにはどうすればよいですか?
ページのソースにスタイルシートが含まれていないので、どのスタイルを調整すればよいかわかりません。
編集 1
または、私がこれを行うときでも:
<div class="highlight">
<%= @question.test_suite %>
</div>
次のようにレンダリングされます。
編集 2
BoraMa の提案を試みたところ、次のような出力が得られました。
編集 3
BoraMa の回答を次のように変更しました。
私のblock_code
方法では、次のようにハイライトを呼び出します。
Rouge.highlight(code, 'ruby', 'html')
次に、私の見解では、これを行います:
<%= raw rouge_markdown(<<-'EOF'
def rouge_me
puts "this is a #{'test'} for rouge"
end
EOF
) %>
次に、これが生成されます:
スクリーンショットの下部にあるコード スニペットを参照していることに注意してください。
ただし、上部のテキストは次のように生成されます。
<pre class="highlight ruby">
<%= rouge_markdown(@question.body) %>
</pre>
そして、スクリーンショットに示すようにレンダリングされます。
編集 4
を削除すると<div class="highlight">
、次のように表示されます。
別名....何もレンダリングされていません。
ビューに追加raw
すると...別名<%= raw rouge_markdown(@question.body) %>
ビューはこれをレンダリングします:
編集 5
@question
さまざまなオブジェクトのコンテンツは次のとおりです。
[1] pry(#<#<Class:0x007fc041b97ce8>>)> @question.body
=> "5.times do\r\n puts \"Herro Rerl!\"\r\nend"
[1] pry(#<#<Class:0x007fc041b97ce8>>)> @question.body
=> "puts \"Hello World version 9\"\r\nputs \"This comes after version 8.\"\r\nputs \"This comes after version 7.\"\r\nputs \"This comes after version 6.\"\r\nputs \"This comes after version 5.\"\r\nputs \"This comes after version 4.\"\r\nputs \"This comes after version 3.\"\r\nputs \"This comes after version 2.\"\r\nputs \"This definitely comes after version 1.\""
[1] pry(#<#<Class:0x007fc041b97ce8>>)> @question.body
=> "def convert_relation(invited_gender, relation)\r\n case invited_gender\r\n \twhen \"male\"\r\n \tcase relation\r\n when \"daughter\", \"son\" then \"dad\"\r\n when \"mom\", \"dad\" then \"son\"\r\n when \"grandfather\", \"grandmother\" then \"grandson\"\r\n when \"sister\", \"brother\" then \"brother\"\r\n when \"wife\" then \"husband\"\r\n when \"husband\" then \"husband\"\r\n end\r\n when \"female\"\r\n \tcase relation\r\n when \"daughter\", \"son\" then \"mom\"\r\n when \"mom\", \"dad\" then \"daughter\"\r\n when \"grandfather\", \"grandmother\" then \"granddaughter\"\r\n when \"sister\", \"brother\" then \"sister\"\r\n when \"wife\" then \"wife\"\r\n when \"husband\" then \"wife\"\r\n end\r\n end\r\nend\r\n\r\nputs convert_relation(\"male\", \"wife\")"