【发布时间】:2015-06-23 23:50:00
【问题描述】:
想象一个典型的现代网络应用程序 - 在导航栏或顶部的一些导航元素中,有一个 notifications 菜单,它告诉用户自上次访问以来他们收到了多少通知。
它也可能有一个下拉菜单,他们可以清除现有通知或仅查看它们。
鉴于这些通知需要出现在所有视图中,我应该将其逻辑放在哪里?在我的ApplicationController?出于某种原因,这感觉不对 - 但我看不到任何其他解释。
另外,我应该把实际的部分放在通用/shared/ 文件夹中吗?
对于那些具有Dashboard 控制器(即非静态资源)的应用程序,它只是充当大量此类信息的中心枢纽,解决此问题的最佳方法是什么?在将包含在Dashboard 中的部分结构方面。
编辑 1
根据下面 Kevin 和 Collin 给出的答案,我需要更进一步。
他们推荐 Facade 模式,正如 Sandi Metz 通过Thoughtbot here 解释的那样。
但是,这是我的问题。在我的 application.html.erb 中,我有一个部分正在渲染 - <%= render partial: "shared/navbar" %>. 在那个部分中,我希望能够调用某些东西(例如 @notifications)。我将如何访问该实例变量和其他共享变量/资源上将在此 facades/dashboard.rb 中声明的其他部分?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4