我每天制作一个静态网站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但我收到以下错误:
我已阅读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
答案 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
并非所有其他设置,无论如何都能够到达公共目录。