Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在/public中路由到static.md页面(RubyonRails 2.3.5)_Ruby_Routing_Ruby On Rails 2 - Fatal编程技术网

在/public中路由到static.md页面(RubyonRails 2.3.5)

在/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+

有人问了这个问题,但答案是针对RubyonRails3.0的+

基本上,我想把我的wiki页面(即.md页面)放在我2.3.5RubyonRails项目的公共文件夹中。我希望用户在键入
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。。告诉大众,我更新了我的答案,以反映我在你的方法中遇到的一些问题