【问题标题】:how do you organize static pages in your rails projects?您如何在 Rails 项目中组织静态页面?
【发布时间】:2026-02-04 05:10:01
【问题描述】:

总是有一些静态页面,例如关于(about.html)、联系人(contacts.html) 等。在一些教程中,作者创建了一个名为“site”的特殊控制器,并定义了“about”、“contacts”操作,这些操作仅呈现静态页面并允许在其他 erb 页面中使用 link_to。其他作者只是创建静态 html 页面并使用老式的 About 或类似的东西。哪种方法更好(如果有的话),为什么要选择另一种?

【问题讨论】:

    标签: ruby-on-rails static routing


    【解决方案1】:

    我不喜欢直接从 URL 栏访问静态资源——它们往往会在某些时候变成静态资源,从而破坏链接并导致应用范围内的链接更新。并不总是很重要,因为这样的事情通常是孤立的,但是......并非总是如此,并且在它们不是时找到它们可能会很痛苦。

    我只是看不出将它们隔离为静态资源的充分理由,它们通常使用与站点其余部分相同的布局,您可能希望稍后添加行为,等等。

    【讨论】:

    • 所以你为他们创建了一个特殊的控制器?
    • @Sergey 是的,尽管它通常只是空的并且依赖于默认的模板分辨率。也就是说,我很少有 100% 的静态页面——有时它可能是有意义的。
    【解决方案2】:

    直接通过 Nginx 或 Apache 提供静态资产 -- 这样会快很多。

    见: http://blog.joeygeiger.com/2011/06/07/serving-assets-in-rails-3-1-with-nginx/

    【讨论】:

    • 但是这种方式不是只适用于 Nginx 或 Apache 吗?如果有另一个 Web 服务器呢?
    • @Sergey 基本上每个解决方案都有类似的方法将静态内容与动态内容分开。
    • @Sergey:你在前端用什么?
    【解决方案3】:

    好的,所以您知道两个主要答案(第一个有一些变化)。使用哪一个是您的选择。如果您只需要一些小红宝石,请使用静态控制器(可以随意命名)。如果您不打算使用任何 rails/ruby 好东西,那么请远离 rails 并使用 apache/nginx 提供这些页面。

    更新:阅读 Dave Newton 的第二段,有时使用 rails stack 来保持布局一致是很有意义的。确保使用页面缓存。

    【讨论】: