如何处理rails 3中基于ajax的子组件?

我正在重构rails 3应用程序,并想知道如何最好地处理基于ajax的子组件?

我有一个’仪表板’控制器。 这是通过’dashboard#show’动作呈现的。

我现在想要一个基于ajax的’tabs’组件,它是仪表板的一部分。

我有两种可能的解决方案:

解决方案1:将标签组件实现为动作,例如’dashboard#tabs’(这是我目前的解决方案)。 这给了我丑陋的帮手:

  • tabs_dashboard_path

解决方案2:将其实现为嵌套资源,例如’dashboard / tabs#show’。 这将给出很好的命名助手,例如:

  • dashboard_tabs_path

记住我有很多其他ajax组件什么是最好的行动方案?

如果我使用解决方案2,我的资源将变得非常嵌套,并且他们只会有一个“显示”动作; 这对我来说似乎有点过于冗长。

例如,路线将被指定为:

resource :dashboard, :only => [:show], :controller => "users/dashboard" do resource :tabs :only => [:show], :controller => "users/dashboard/tabs" do resource :steps :only => [:show], :controller => "users/dashboard/tabs/steps" #etc.... end end 

有没有一个很好的轨道方式来处理这个?

我倾向于使用很少的动作保持我的控制器,并且只处理基本的REST动词。 因此,在多展示情况下,我会保留单个dashboard#show #show并具有部分/布局来处理选项卡。 我的理由是标签本身不是资源,我也不会对它们实际执行任何RESTful操作。