我认为你想让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