6

Markdown が .erb でうまく動作するようにしようとしています。Redcarpet で解析されるマークダウン ページ (またはマークダウン パーシャルを含む通常の .html.erb ファイル) をレンダリングするために high_voltage を使用したいと思いますが、すべてを連携させるのに苦労しています。

現時点markdown_template_handler.rbでは、次のコードを含む初期化子が呼び出されています。

class MarkdownTemplateHandler
  def erb
    @erb ||= ActionView::Template.registered_template_handler(:erb)
  end

  def call(template)
    compiled_source = erb.call(template)
    markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)

    "#{markdown.render(compiled_source.source).inspect}.html_safe;"
  end
end

ActionView::Template.register_template_handler(:md, MarkdownTemplateHandler.new)

ただし、7行目で失敗し、compiled_source = erb.call(template)「引数の数が間違っています(1が指定され、2が予想されます)」というエラーコードが表示されます

ERB Rubyのドキュメントを見ましたが、私が理解したところでは、call メソッドは new メソッドの派生物であり、1 つの引数 (テキスト) のみを必要とします。ただし、簡単な Rails コンソール セッションで使用しようとすると、2 つの引数も必要でした。

上記のコードから erb を解析する要件を削除すると、すべてが期待どおりに機能するため、Redcarpet が機能しないこととは関係ないと思います。

Rails v6.0.0.rc1 と Ruby v2.5.3p105 を使用しています

どんな助けでも大歓迎です。

編集

さらに調査した結果、Rails 6.0 ERB ActionView テンプレート ハンドラーを見つけることができました。このハンドラの call メソッドには、テンプレートとソースの 2 つの引数が必要です。とはいえ、Rails 5.2.3 では、ERB アクション ビューのテンプレート ハンドラー呼び出しメソッドに必要な引数はテンプレート 1 つだけです。

誰かが、この文脈でどのソースが何であるかを理解する方向に私を指摘してもらえますか? 私が見つけることができるドキュメントはありません。


4

2 に答える 2