根据每个单元格的不同标准将类添加到rails中的表格单元格的最佳方法是什么?
例如...我有一个日期单元格:如果日期从该日期起 10 天即将到来,则需要添加一个“即将到期”类。或者,如果日期已经过了今天,请添加“逾期”课程。
在另一个单元格上,基于字符串,它需要有一个“on”或“off”类。
我不知道该怎么做,但我知道我可能不应该在视图中有一堆逻辑......
请指教。
根据每个单元格的不同标准将类添加到rails中的表格单元格的最佳方法是什么?
例如...我有一个日期单元格:如果日期从该日期起 10 天即将到来,则需要添加一个“即将到期”类。或者,如果日期已经过了今天,请添加“逾期”课程。
在另一个单元格上,基于字符串,它需要有一个“on”或“off”类。
我不知道该怎么做,但我知道我可能不应该在视图中有一堆逻辑......
请指教。
您可以通过以下方式完成它:
class="#{(@date - Time.now <= 10.days) ? upcoming_due : '' %>"
但是,正如您所提到的,视图中有很多逻辑并不好。如果您发现自己重复相同的代码,您可以添加如下所示的辅助方法:
def upcoming(date)
(date - Time.now <= 10.days) ? 'upcoming_due' : ''
end
def past(date)
(date - Time.now <= 10.days) ? 'past_due' : ''
end
在你看来,你会有这样的事情:
class="#{ upcoming(@date).presence || past(@date).presence || '' }"
这听起来像是我在浏览器中使用 Knockout 所做的事情。基本上,您为数据库中的每个字段创建一个带有可观察字段的剔除模型,并使用计算字段来计算类名或基于这些字段的任何内容。然后,您使用 HTML 模板中的数据绑定属性绑定到敲除的计算字段。
这种方法的缺点是用户需要启用 javascript 才能正确应用类,并且您在 javascript 中添加了一些逻辑。但我认为 javascript 文件是放置显示逻辑的好地方。