将ID/Class添加到Rails link_to的更干净的方法



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

将它放在模型中可以显著简化测试。

相关内容

  • 没有找到相关文章

最新更新