Rails:视图中基于params的特殊类

时间:2013-04-25 16:46:20

标签: ruby-on-rails model-view-controller view logic controllers

根据每个单元格的不同标准,在rails中向表格单元格添加类的最佳方法是什么?

例如......我有一个日期单元格:如果日期是从该日期起10天后出现的,则需要添加“即将到期”的课程。或者,如果日期已过去,请添加“过期”课程。

在另一个单元格上,基于字符串,它需要一个“on”或“off”类。

我不知道该怎么做,但我知道我可能不应该在视图中有一堆逻辑......

请指教。

2 个答案:

答案 0 :(得分:0)

你可以用这样的东西来完成它:

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 || '' }"

答案 1 :(得分:0)

这听起来像是我在浏览器中使用Knockout做的事情。基本上,您为数据库中的每个字段创建一个带有可观察字段的挖空模型,并计算字段以根据这些字段确定类名或其他内容。然后,您可以在HTML模板中使用data-bind属性绑定到knockout的计算字段。

这种方法的缺点是用户需要启用javascript才能正确应用类,并在javascript中添加一些逻辑。但我认为javascript文件是放置显示逻辑的好地方。