来自官方指南:
如果控制器没有实现与其名称相同的方法 动作在其动作对象中,动作将被发送到 路由器,当前活动的叶子路由将有机会 处理行动。
那么什么是专业& amp;在控制器中定义动作方法和在路径中定义动作方法的缺点?我可以看到指南并没有谈到这一点。 在控制器中定义可以更快"在防止动作起泡的意义上。
答案 0 :(得分:31)
很好的问题,虽然可能不适合SO格式。
简单的答案是,在路由器中放置与路由相关的操作,在控制器中放置与控制器/模型相关的操作。
如果您发现自己在路由器操作中调用了this.controllerFor
,或者在控制器操作中调用了this.get('target')
,那么您很可能错误地放置了该操作。
与过渡相关的行动通常是放入路线的好选择。修改或保存模型等操作可能属于控制器。
请记住,操作从叶子路径冒泡到父路径。因此,如果要定义适用于一组子路由的操作,则将其放在父路由中是有意义的。