Markdown をレンダリングする必要があると思います。ディレクトリから単純に提供するだけpublic
では、Rails はそれをレンダリングしません。
あなたができることは、たとえばWikiController
のような場所に保存されているマークダウンファイルをレンダリングできる新しいコントローラーですlib/wiki
。私はこれを直接テストしていないので、ガイドとしてのみ使用する必要がありますが、問題なく動作するはずです.
コントローラーは次のようになります。
# app/controllers/wiki_controller.rb
class WikiController < ApplicationController
def show
page = File.open(File.join(Rails.root, 'lib', 'wiki', "#{params[:page_id]}.md"), 'r') { |f| f.read }
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true)
render :html => markdown.render(File.join(Rails.root, 'lib', 'wiki', "#{params[:page_id]}.md"))
end
end
そして、次のようなルートを追加できます。
# config/routes.rb
map.connect 'wiki', :controller => 'wiki', :action => 'show', :page_id => 'home'
map.connect 'wiki/*page_id', :controller => 'wiki', :action => 'show', :as => :wiki
最初のルートは特殊なケース ( home.md
) を処理し、2 番目のルートは自由にウィキを構成できるようにします (ファイルをサブディレクトリに配置するなど)。にリンクする/wiki/help/getting_started
と、ファイルのレンダリングが試行されますlib/wiki/help/getting_started.md
。
アプリ内から wiki ページにリンクする必要がある場合は、 を呼び出すことができるように、リンク ヘルパー メソッドもありますwiki_path(:page_id => 'help/getting_started')
。
このソリューションは、Markdown レンダリングにRedCarpetを使用していることを前提としていますが、好きなレンダラーを切り替えることができます。