如何制作这些铁路路线

时间:2011-03-07 22:56:30

标签: ruby-on-rails-3 routing

我正在尝试制作一些路线来查看和管理应用中的任务。 这些任务属于组织。 我的想法是做这样的事情:

organizations/1/missons                 #(index) list of missions of the organization
organizations/1/missions/1                  #show a mission that belongs to an organization
organizations/1/admin/missions              #list of missions in a new view that has the commands to admin the missions
organizations/1/admin/missions/1/edit         #edit the mission
organizations/1/admin/missions/1/destroy    #destroy the mission
missions                                    #all missions of all organizations
missions/1                                  #show mission page

我真的不知道这是否是一个很好的方法来破坏这样的系统,或者它是否在某种程度上过度杀伤。 现在我的标准路由工作正常:

resources :organizations do
    resources :missions
end

但我希望有更多意见。 什么是最好的方法来解决这个问题,以及有多少控制器让他们保持精益并且几乎没有什么动作?

1 个答案:

答案 0 :(得分:1)

一如既往,有几种方法可以实现这一目标。我可能会选择两个不同的常规任务控制器,也许是这样的:

resources :organizations do
  resources :missions, :only => [:index, :show]
  resources :admin_missions
end
resources :missions, :only => [:index, :show]

这当然会导致“... admin_missions ...”而不是“... admin / mission ......”但我认为这是最简单的方法。这将使用三个控制器,其中MissionsController从两个不同的位置调用,但您可以通过检查params [:organization_id]是否存在来检查要显示的内容。

修改

如果您决定为所有任务和组织使用相同的控制器,以下是索引操作如何开始的示例:

def index
  if params[:organization_id]
    @organization = Organization.find(params[:organization_id])
    @missions = @organization.missions.all
  else
    @missions = Mission.all
  end

  ...
end

但是如果你想为它们提供不同的视图,那么分离到两个控制器可能会更好。