Ruby on rails RubyonRails-加载侧列内容/块的最佳实践/方法

Ruby on rails RubyonRails-加载侧列内容/块的最佳实践/方法,ruby-on-rails,performance,helpers,instance-variables,Ruby On Rails,Performance,Helpers,Instance Variables,我正在开发一个社区/新闻文章网站,其中几乎所有页面上都有一个带有不同“块”的侧栏。在这些块中是“最近的文章(显示五篇最近的文章)”、“最近的博客”、“最近的评论”,你会明白其中的意思 当我开始构建应用程序时,我并不确定控制器代码应该放在哪里(比如说,调用@recent_articles=Article.where…等等)。我认为它不能进入文章控制器,因为它并不总是被调用文章控制器。所以我认为它在应用程序控制器中工作得最好,因为站点上的大多数内容都会调用它。我将“@recent_content”放

我正在开发一个社区/新闻文章网站,其中几乎所有页面上都有一个带有不同“块”的侧栏。在这些块中是“最近的文章(显示五篇最近的文章)”、“最近的博客”、“最近的评论”,你会明白其中的意思

当我开始构建应用程序时,我并不确定控制器代码应该放在哪里(比如说,调用@recent_articles=Article.where…等等)。我认为它不能进入文章控制器,因为它并不总是被调用文章控制器。所以我认为它在应用程序控制器中工作得最好,因为站点上的大多数内容都会调用它。我将“@recent_content”放入应用程序控制器中,在加载它之前执行了一个:before_过滤器

你可能会看到这其中的缺陷。随着我对Rails的使用越来越好,我又回到了重构,因为站点的加载非常糟糕,而且可以肯定的是,我在应用程序控制器中的所有逻辑(由before_filter定义)都被加载到每个操作中,无论是否需要。(当我在应用程序控制器上清理房间时,网站速度急剧加快)

我的错误已经意识到了,但我仍然需要在某处定义@recent_articles、@recent_blog等的实例变量,因此它们只在需要时加载。当然,当网站投入生产时,我最终会缓存网站内容,但我想在这里成为一名优秀的Rails程序员

所以这里是我的问题…你到底会如何处理这种情况,你会把逻辑放在哪里?我可以想出两种方法,不知道哪一种更好

第一种方式……我看了一个来自另一个Rails开发人员的项目,我注意到他在/lib文件夹中创建文件,做了类似这样的奇怪事情。例如,定义页面元标记或活动菜单状态的方法。老实说,我以前没有弄乱过/lib文件夹,我认为我的大部分内容应该放在/app文件夹中

第二种方式……在我看来,帮手似乎是一种方式。也许我可以定义一个“recent_articles”助手,在其中调用@recent_articles实例变量,然后渲染结果并将其传递到共享文件夹中的视图文件


总的来说,从性能或最佳实践的角度来看,以下哪种方法是更好的方法?还是有一种我不知道的更好的方法来实现这一点?

每当有许多模型可以调用特定的方法时,我可能会使用一个模块。我认为这就是您在第一个想法中所说的,因为/lib是模块的放置位置

您也可以使用helper,但是最好不要使用helper中的逻辑,如果可能的话,只在模型中使用。助手应该只是用来表示数据的一种方式,它们是视图的一部分。如果添加了逻辑,则说明有问题:)

确保控制器中也没有逻辑。一开始我也会做同样的事情,但这真的是个坏主意。取而代之的是,把所有的东西都放在你的模型中,或者如果其他模型似乎都在使用它们的话,也可以放在一个模块中


希望这对您有所帮助:)

Ah,我看到的是lib文件夹中的模块。看来我得好好读一读这些……似乎是我要走的路。多谢各位。