Ruby Rack Heroku:无法访问多个URL

时间:2014-04-29 12:16:03

标签: ruby heroku static rack

我已经按照Heroku指南使用Ruby Rack(https://devcenter.heroku.com/articles/static-sites-ruby)来部署静态文件 但是,除了index.html之外,我无法访问\ public中的任何HTML文件(每个URL都解析为主页)
config.ru文件:

use Rack::Static,
:urls => ["/bootstrap", "/css", "/fonts", "/images", "/js", "/font-awesome"],
:root => "public"
run lambda { |env|
[
 200,
{
  'Content-Type'  => 'text/html',
  'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}


我查了以下帖子:
Ruby Rack Heroku: Serving Static Files
How to setup URLs for static site with Ruby Rack on Heroku

我仍然无法超越index.html页面。

当我更改config.ru,如下所示...我收到应用程序错误

use Rack::Static, 
:urls => ["/bootstrap", "/css", "/fonts", "/images", "/js", "/font-awesome"],
:root => "public"

map "/" do
 run lambda { |env|
 [ 
   200, 
  {
   'Content-Type'  => 'text/html', 
   'Cache-Control' => 'public, max-age=86400' 
  },
  File.open('public/index.html', File::RDONLY)
 ]
}
 end

 map "/about" do
  run lambda { |env|
  [
     200, 
   {
    'Content-Type'  => 'text/html', 
    'Cache-Control' => 'public, max-age=86400' 
   },
   File.open('public/about/index.html', File::RDONLY)
  ]
}
 end 


有没有办法映射多个网址?我的index.html中有5-6页,但无法访问。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以创建一个只渲染这些页面的简单控制器。可能比试图绕过MVC更容易。如果您需要帮助,请告诉我:))

更新-----

实施例

控制器:

class PublicController < ApplicationController
  def index
     render "public/index"
  end

  def about
    render "public/about/index"
  end
end

然后将html文件放在控制器中指定的子目录的views文件夹中。

另外,不要忘记将这些方法添加到config目录中的routes.rb文件中。