我認爲你想讓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
),第二個會允許你構建你喜歡的wiki(包括將文件放置在子目錄中等)。鏈接到/wiki/help/getting_started
將嘗試呈現文件lib/wiki/help/getting_started.md
。
您還有一個鏈接幫助程序方法,因此如果您需要從您的應用程序鏈接到wiki頁面,則可以撥打wiki_path(:page_id => 'help/getting_started')
。
此解決方案假定您使用RedCarpet進行Markdown渲染,但是您可以切換您喜歡的任何渲染器。
rails 2.3.x的指南在這裏:http://guides.rubyonrails.org/v2.3.11/如果你使用的是2.3.5,你肯定需要升級,版本中有一些很大的安全問題少於2.3.11。 – theTRON 2013-05-03 09:58:24
@theTRON uha ..告訴那個[fedena](http://www.projectfedena.org/)夥計 – abbood 2013-05-03 10:40:14