我正在尝试制作一些路线来查看和管理应用中的任务。 这些任务属于组织。 我的想法是做这样的事情:
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
但我希望有更多意见。 什么是最好的方法来解决这个问题,以及有多少控制器让他们保持精益并且几乎没有什么动作?
答案 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
但是如果你想为它们提供不同的视图,那么分离到两个控制器可能会更好。