0

我有一个广告模型。每个广告都属于一个区域。

为了尝试使用更具可读性的 URL,我在 routes.rb 中定义了一个自定义路径:

match "/adverts/:area_id/:id" => "adverts#show", :as => :advert_semantic

这会产生类似的东西

/adverts/manhattan/123

但是,在极少数情况下,广告可能未分配到某个区域。在这些情况下,Rails 会引发错误,并且不会呈现调用路径的页面。

我想通过检查广告是否首先分配了一个区域来解决这个问题,如果没有区域,则生成常规路径 (/adverts/123) 作为后备。

你会建议什么是最好的方法来做到这一点?例如,最好构建一个可以执行上述操作的辅助方法,或者如果在同一页面上多次调用该方法,这会对性能产生影响吗?

4

1 回答 1

0

当然,采取的任何额外操作都会影响性能,但如果您谨慎行事,这不应该是禁止的(并且缓存始终是一种选择。)

在这种情况下,我会选择助手。像这样的东西。。

def advert_link( advert )
  if advert.area.blank?
    link_to advert.title, advert
  else
    link_to advert.title, advert_semantic_path( advert, area_id: advert.area.id )
  end 
end

将开销保持在最低限度,尽管这当然取决于它的使用量。

于 2012-09-30T18:29:15.227 回答