【发布时间】:2014-04-02 02:20:17
【问题描述】:
我正在寻找一种更好的方法来设计一些需要在各种模型之间共享大量控制器数据的 Rails 视图。我经常遇到需要将关联与各种其他模型结合起来的场景。想想这个场景(这来自一个游戏):
- 一个城市有很多建筑(用户通过city_buildings有很多建筑)
- 现在,每个建筑都可以根据需求进行升级。假设为了建造一个消防站,你首先需要有一口井。
- 我的应用程序显示了当前建造的建筑物。如果无法构建,它会遍历 @city.buildings 及其要求。
现在,我的问题是在我的控制器/视图中正确处理这些数据。我总是尝试在我的视图中使用尽可能少的代码,并尝试主要在那里使用实例变量。每个建筑物都有不同的要求,这些要求源自关联 building.requirements。我的部分观点取决于这个要求,因此我必须在我的观点中进行这样的检查:
<% if building.fulfil_requirements?(city) %>
过去,我曾尝试使用 SQL 连接来创建实例变量,这些变量具有更多关于关联的信息,也基于其他模型,但我发现这种技术相当混乱。在某些情况下,由于需要在 foreach 循环中计算某些内容,我不得不在视图中运行模型方法,这是我非常不喜欢的。
所以,我想知道是否有更好的解决方案可以在我的视图中组合多个模型行为,而不必在我的视图中添加逻辑。
【问题讨论】:
标签: ruby-on-rails