我正在重构一个具有多个视图的应用,这些视图利用单个控制器操作来处理相同数据的不同方面(表格,日历,另一个日历,文件导出)
目前,该操作使用参数和条件来选择4个响应中的一个,但实际数据对所有4个响应都是通用的。
这种情况有通用做法吗?看起来最简单的事情就是将这个动作分解为4个动作并使用过滤器和私有方法保持DRY。
答案 0 :(得分:1)
我同意你的观点。
把它们全部放在一个动作中实际上并不是那么干。处理具有条件的参数,准备模板名称,在视图中准备查询字符串,这些都需要与拆分操作相比较不必要的代码。
另一个缺点是过滤器和操作消息。分割为多个操作,action_name
不同,然后可以发送不同的消息。
例如,我有一个应用程序,其中一个模型具有vote
方法。我最终使用vote_up
和vote_down
,因为只允许登录用户投票,然后将正确的action_name发送到CanCan。