Ruby on rails 当我有多组数据时,我想完善我的控制器视图交互

Ruby on rails 当我有多组数据时,我想完善我的控制器视图交互,ruby-on-rails,model-view-controller,design-patterns,view,controller,Ruby On Rails,Model View Controller,Design Patterns,View,Controller,我觉得控制器->视图交互遗漏了一些东西,所以这里是我的问题 我有一个控制器动作,它正在生成一组数据: @首先 @第二 @第三 每个变量在视图中显示为一个html块(部分) 有时其中一个或多个将是空的,我仍然想显示其他的 我解决这个问题的方法是在控制器中将变量设置为字符串(“无数据”),因为通常数据是某种数组,我在视图中测试字符串,以检查是否有真实数据,并做出相应的响应 除此之外,我还有一些用例,在这些用例中,我的数据并不总是以相同的部分格式显示。我知道,在调用正确的分部函数之前,我可以使用一些条

我觉得控制器->视图交互遗漏了一些东西,所以这里是我的问题

我有一个控制器动作,它正在生成一组数据:

@首先 @第二 @第三

每个变量在视图中显示为一个html块(部分)

有时其中一个或多个将是空的,我仍然想显示其他的

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

除此之外,我还有一些用例,在这些用例中,我的数据并不总是以相同的部分格式显示。我知道,在调用正确的分部函数之前,我可以使用一些条件来完成它

我想到的这类问题的一个很好的例子是仪表板,其中某些项目有时会丢失或根据显示的数据而变化


我已经在使这些用例正常工作,但是我觉得我没有通过在视图中加入太多的逻辑来正确地进行MVC。是否有更好的设计模式(特定于rails或不特定于rails)来解决这种情况?

您可以检查值present或not using present?在MVC中

在控制器/视图中检查此条件

if @first.present?
  do somthing
end

我看你的方法没有什么大问题。您有一些逻辑来确定如何显示数据的细节。你无法逃避这一点。唯一的问题是这一逻辑应该走向何方(唉,它无法消失)。我认为把它摆在眼前是最好的决定


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

这似乎是

Draper将
视图模型
插入位于控制器和视图之间的MVC组合中,并装饰模型,以面向对象的方式处理所有自定义视图逻辑,同时将其与视图层和模型层分开

请看一个例子。相当不错(如果你想起来的话,也是合乎逻辑的)