快速(且无益)的答案是任何一种方式都可以正常工作。
我认为每个人都会在某一时刻遇到这个决定,而您做出的决定取决于网站可能的未来......这意味着它很容易过早优化......但这总是问题,
正如您现在可能已经猜到的那样,“家”在某些方面既是动词又是名词,这就是为什么您难以弄清楚该做什么的原因。
答案取决于您对网站结构的解释以及您可以使用多少时间...
如果您没有多少时间来处理这个......那么将“家庭”动作填充到另一个控制器中通常被认为是权宜之计。它有效,它可以让你转移到其他(可能更有效率)的任务上。
然而,我同意有时候退后一步想想你在做什么以及它是否可以做得“更好”是件好事……在这种情况下,虽然很难定义“更好”——因为不太可能把新控制器中的 home 动作会明显更快......如果它是控制器中唯一的动作......从架构上讲,将其添加到现有控制器中是否更好是值得商榷的......
因此,我们从主要是哲学辩论开始……换句话说,没有一个答案会比另一个“更正确”——这更多的是品味和环境问题。在这种情况下,争论的焦点在于使结构更加 RESTful。
为了忠实于 RESTful 架构,您确实会将操作移动到它自己的控制器中……但您首先必须确定实体是什么。“主页”通常不容易识别为特定的数据库实体......它更常见的是门户页面。
有时您可以选择一个实体,例如在线商店通常会有一个实际上是“products#index”变体的主页,或者有时“主页”页面是 UserAccount#show 页面......但更多情况下,您的主页将并不简单,并且会结合来自多个实体的信息......因此很难决定“正确”的架构是什么。
如果您无法识别特定实体,那么关于是否将操作移至特定控制器存在有效辩论。
但是,您始终可以创建一个以站点架构为中心的新“实体”。如果您要为网站提供其他非实体特定页面(例如 T&C 或“关于我们公司”页面),这种情况尤其可能发生。
通常的后备是“PageController”(或类似名称),它不链接到 Active Record模型,而是链接到更模糊的实体,在这种情况下,是网站用户可识别的“页面”(例如“主页”和“T&C 页面”和“关于页面”)。每个操作都针对特定页面...
因此,这取决于您是否更适合您对系统架构的看法......以及是否值得努力......但这是我对辩论的看法。:)