1

我觉得控制器 - >视图交互错过了一些东西,所以这里是我的问题。我想完善我的控制器 - 视图交互,当我有多组数据时

我有一个控制器的动作,其产生一组数据:

@First @second @third

每个变量被显示在视图一个HTML块(谐音)。

其中一个或多个这些将是空的,我还想显示其他的。

我解决这个问题的方法是在控制器中设置变量为一个字符串(“no data”),因为通常数据是某种数组,我测试视图中的字符串以检查是否存在是真实的数据并作出相应的反应

最重要的是,我也有用例,我的数据不会总是显示相同的部分。我知道在调用正确的部分之前,我可以用一些条件来做到这一点。

我想到的那种问题的一个很好的例子就是一个仪表板,其中有些项目有时会丢失或改变,这取决于显示的数据。

我已经使这些用例工作,但它感觉我没有正确地做MVC,因为在视图中放置了很多逻辑。为了解决这种情况,是否有更好的设计模式,轨道是否具体化?

回答

0

您可以使用礼物来检查存在或不存在的值吗?在MVC中。

在你的控制器/视图中检查这个条件。

if @first.present? 
    do somthing 
end 
0

我没有看到您的方法有任何严重的问题。你有一些逻辑决定了数据如何显示的细节。你无法逃避这一点。唯一的问题是这个逻辑应该去哪里(它不能消失,唉)。我认为把它放在视图中是最好的决定。

但是,我建议尽可能明确地使控制器和视图之间的接口。将变量设置为零比将其设置为“无数据”要清楚。您可能需要在模型中添加更多变量,以便View知道该怎么做。这比有例如一个通常是数组的变量,但有时会保存一个字符串,告诉View如何显示数据。

0

这似乎是为Draper

德雷珀作业插入View-Model到MVC结构它坐落控制器和视图之间和装饰的典范,处理所有的自定义视图逻辑在面向对象的方式,同时保持它将视图和模型图层分开。

例如,看看RailsCast on Draper。相当不错(如果你想到的话,也是合乎逻辑的)。

相关问题