2010-11-16 70 views
2

好吧,我在这里有一个奇怪的模式,我不明白。Rails STI Association和嵌套资源

我有一个以CallList为基础模型设置的STI,并且继承City & State。一个城市属于一个国家(一个州有很多城市)。

一个广告系列有很多通话清单,所以我想将它们全部显示出来。我循环campaign.call_lists,有时得到城市,有时是国家。当我要链接到他们,我做

link_to call_list.name, call_list 

,如果我有这些航线的正常工作:

resources :cities, :states 

当我里面州窝城市,不过,助手的link_to无法弄清楚适当的路线。有没有一个简单的方法来做到这一点,或者我将不得不做一些手动路径帮手建设?

+0

当你说“鸟巢城市里指出:”你在你的意思航线, 对?我假设这些关联已经正确设置了? – Gareth 2010-11-16 13:43:06

+0

是的,协会工作得很好,我的路线是嵌套的。所以如果我的call_list是一个状态,我可以只是link_to状态,但是如果它是一个城市,我需要做state_city_path(城市),而不仅仅是city_path(城市)。我可以在视图中添加一个case语句,但这很丑陋,我想知道是否有某些东西在轨道或插件中,可以从路线中找到它? – 2010-11-16 13:46:05

+0

你需要检查一下call_list的类型,然后使用正确的路由..它不能直接作为路由嵌套.. – 2012-02-10 05:31:40

回答

0

你需要检查的一种call_list,然后用适当的route..it不能直接作为路由嵌套..

link_to call_list.name, call_list.is_a?(City) ? call_list : state_city_path(call_list)