我有一个广告模型。每个广告都属于一个区域。
为了尝试使用更易读的URL,我在routes.rb中定义了一个自定义路径:
match "/adverts/:area_id/:id" => "adverts#show", :as => :advert_semantic
这会产生类似
的东西/adverts/manhattan/123
但是,在极少数情况下,广告可能未分配到某个区域。在这些情况下,Rails会抛出错误,并且不会呈现调用路径的页面。
我想通过检查广告是否首先分配区域来解决此问题,如果没有区域,则生成常规路径(/ adverts / 123)作为后备。
您认为最好的方法是什么?例如。是否最好构建一个可以执行上述操作的辅助方法,或者如果在同一页面上多次调用该方法,这会对性能产生影响吗?
答案 0 :(得分: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
将开销保持在极小,尽管这取决于它的使用程度。