在heroku上路由到/ public中的静态html页面

时间:2014-12-27 18:52:58

标签: ruby-on-rails heroku

我每天制作一个静态网站30天,我想创建一个小型Rails应用来展示这些网站。我将在Heroku上主持这个。当我在本地运行我的Rails应用程序时,它可以工作,但它不适用于Heroku。

我阅读了关于rendering static HTML页面的帖子并让它发挥作用!只需将链接直接链接到我的公共文件夹:

views / landings / index.html.erb

<ul>
  <li>
  <a href="../oneWebsiteADay/colorNotes/index.html">Color Notes</a>
  </li>
  <li>
    <a href="../oneWebsiteADay/yeOldeMuffinShoppe/index.html">Ye Olde Muffin Shoppe</a>
  </li>
</ul>

这很有效,我可以点击链接并查看完整的静态网站。当我部署到Heroku但我收到以下错误:

Rails error

我已阅读all documentation Heroku provides关于使用Rails呈现静态内容并相应修改我的配置:

config / environments / production.rb

Rails.application.configure do
  config.cache_classes = true
  config.eager_load = true
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = true
  config.serve_static_assets = true
  config.assets.js_compressor = :uglifier
  config.assets.compile = true
  config.assets.digest = true
  config.log_level = :info
  config.i18n.fallbacks = true
  config.active_support.deprecation = :notify
  config.log_formatter = ::Logger::Formatter.new
  config.active_record.dump_schema_after_migration = false
end

但我仍然收到错误。不知道此时还要做什么如何在heroku上显示静态HTML页面?

路线:

Rails.application.routes.draw do
  get "/", to: 'landings#index'
end

1 个答案:

答案 0 :(得分:0)

您的链接路径文件中没有路由,因此出错。在the link you posted中,它告诉您使用以下方法在路径文件中定义路径:

get '/foo', :to => redirect('/foo.html')

因此,如果您在路线文件中定义路线为:

get '/colorNotes', :to => redirect('/oneWebsiteADay/colorNotes/index.html')
get '/yeOldeMuffinShoppe', :to => redirect('/oneWebsiteADay/yeOldeMuffinShoppe/index.html')

并相应地更改链接标记:

<a href="/colorNotes">Color Notes</a>
<a href="/yeOldeMuffinShoppe">Ye Olde Muffin Shoppe</a>

我认为这会有效,但我无法弄清楚为什么它不会搜索heroku上的公共文件夹。

另外,只是fyi,我认为你所需要的只是:

config.serve_static_assets = true

并非所有其他设置,无论如何都能够到达公共目录。