0

この質問は以前に尋ねられましたが、答えは ruby​​ on rails 3.0+ に対するものでした

基本的に、2.3.5 ruby​​ on rails プロジェクトのパブリック フォルダー内に wiki ページ (つまり .md ページ) を配置したいと考えています。ユーザーがタイプしたときに wiki ページのホームにアクセスできるようにしますmysite.com/wiki(つまり、これは にマップされ/public/wiki/home.mdます)。

Ruby on Rails 2.3.5でこれを行うにはどうすればよいですか? (オンラインのルーティングドキュメントはあまり有益ではありませんでした)

また、一般的に、何らかの理由で RoR 2.3.5 プロジェクトに行き詰まっている場合、ドキュメントはどこに行けばよいですか? 公式ドキュメントは最新の RoR バージョン (つまり 3+) にのみ関連しているようです。

4

1 に答える 1

2

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を使用していることを前提としていますが、好きなレンダラーを切り替えることができます。

于 2013-05-03T10:48:02.887 に答える