在/public中路由到static.md页面(RubyonRails 2.3.5)
有人问了这个问题,但答案是针对RubyonRails3.0的+ 基本上,我想把我的wiki页面(即.md页面)放在我2.3.5RubyonRails项目的公共文件夹中。我希望用户在键入在/public中路由到static.md页面(RubyonRails 2.3.5),ruby,routing,ruby-on-rails-2,Ruby,Routing,Ruby On Rails 2,有人问了这个问题,但答案是针对RubyonRails3.0的+ 基本上,我想把我的wiki页面(即.md页面)放在我2.3.5RubyonRails项目的公共文件夹中。我希望用户在键入mysite.com/wiki(即这将映射到/public/wiki/home.md)时访问wiki页面的主页 如何在RubyonRails2.3.5中实现这一点?(路由文档的信息量不大) 一般来说,如果出于某种原因,我被RoR 2.3.5项目困住了。。我在哪里获取文档?官方文档似乎只适用于最新的RoR版本(即3+
mysite.com/wiki
(即这将映射到/public/wiki/home.md
)时访问wiki页面的主页
如何在RubyonRails2.3.5中实现这一点?(路由文档的信息量不大)
一般来说,如果出于某种原因,我被RoR 2.3.5项目困住了。。我在哪里获取文档?官方文档似乎只适用于最新的RoR版本(即3+)我猜您希望降价。如果您只是从
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_start
将尝试呈现文件lib/wiki/help/getting_start.md
您还有一个link-helper方法,因此如果需要从应用程序中链接到wiki页面,您可以调用wiki\u路径(:page\u id=>“help/get\u start”)
此解决方案假设您使用的是降价渲染,但是您可以切换任何您喜欢的渲染器。rails 2.3.x的指南如下:如果您使用的是2.3.5,您肯定需要升级,低于2.3.11的版本中存在一些严重的安全问题。@theTRON uha。。告诉大众,我更新了我的答案,以反映我在你的方法中遇到的一些问题