Rails的新功能。。。我创建了一个助手来格式化种族名称&他们的约会。如果存在条件(基本上是如果事件现在正在发生),我需要通过:id => "current-race"
。我该怎么做?
def formatted_race_dates(race)
link_to (race.homepage) do
raw("<strong>#{race.name}</strong> <em>#{race_dates_as_string(race)}</em>")
end
end
现在当race.start_date < Date.today && race.end_date > Date.today
时,我想将id="current-race"
添加到链接。
我通常会设置一个if/else条件,并以两种方式格式化它。但似乎一定有一个我不知道的Ruby技巧可以简化一些事情,比如在列表中的一个link_to
中添加一个id/类?即使没有这个条件,我也不太确定在哪里/如何添加:id => "current-race"
。
有那么多Ruby/Rails技巧我不知道。。。一切都有帮助!
link_to
方法之所以采用选项,正是因为这个原因:
link_to(race.homepage, :id => 'current-race') do ...
你甚至可以添加条件来选择性地触发它:
link_to(race.homepage, :id => (race.start_date < Date.today && race.end_date > Date.today) ? 'current-race' : nil) do ...
如果你有一个Race的方法来指示它是否是当前的,你甚至可以将其折叠:
link_to(race.homepage, :id => race.current? ? 'current-race' : nil) do ...
这很容易在您的模型中实现,也可以在其他地方使用:
def current?
self.start_date < Date.today && self.end_date > Date.today
end
将它放在模型中可以显著简化测试。