繁体   English   中英

最佳方法-视图中的条件

[英]Best approach - Conditions in the view

我有一个模型,上面有名字,标题,描述等。 如果名称是例如天气预报,我想显示一个额外的html元素

= high_chart("my_id", @chart) 

在显示模板中,wich会生成一个漂亮的图表。 当页面不是天气预报时,我不想显示图表。

最好的方法是什么? 查看条件?

由于它看起来像是HAML,因此可以只使用if修饰符,如下所示:

= high_chart("my_id", @chart) if [model.name] == "weather-forecast"

其中[model.name]被替换为适当的代码。

我知道这个答案是最重要的,但是要考虑的是将条件逻辑移出视图。
也许使用View Presenter模式,请参见: 关于rails中的presenter模式。 是更好的方法吗?

演示者是红宝石对象,可以很容易地进行测试。
而视图中包含大量逻辑的确很难测试。
此外,您希望隔离逻辑,在视图页面中检查model.name并不是MVC的最佳方法。

您的问题看起来真的很接近Object on Rails中的展示模式。

简而言之,建议的解决方案是将模型包装在使用模型状态(在您的情况下为记录名称)选择的装饰器(或多个装饰器)中。

我无法像书中解释的那样解释它,但是Pattern非常有用,以至于Avdi Grimm用它制成了一个宝石: https : //github.com/objects-on-rails/display-case

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM