Rails控制器中自定义操作的最佳实践

时间:2015-01-23 09:47:48

标签: ruby-on-rails-4

我正在将一个相当老的rails应用程序升级到Rails4,它对给定的控制器有很多自定义操作。

我的问题是在不改变大量视图文件的情况下清理这些控制器的最佳方法是什么?我试图通过只有REST兼容的操作进行清理,但是我不得不在时间框架内完成这项任务。任何线索都会受到赞赏。

例如在Follow控制器中,我想将filter_setup和somthing_else移动到关注点。这是正确的方法吗?


class ProductsController < ApplicationController

def index @products = Product.all end

def summary fiter_setup end

def fiter_setup somthing_else end

def somthing_else end end

1 个答案:

答案 0 :(得分:1)

我认为concern更适合共享方法,如果是这样的话。

您可以采取的方法是在控制器类中创建私有方法,假设重构某些实例变量(但小心使用)并通过before_action回调调用它们。

重用视图的另一个好处是在操作上呈现该视图,假设您在索引操作中有一个产品列表,但是您有另一组操作来过滤这些产品并显示同样,您可以在该操作中调用render :index方法,并且渲染相同的模板,但要注意您正在使用的实例变量,因为它们应该匹配,否则视图将无法正确加载。

当然,实现这一目标的最佳方法是将所有这些逻辑委托给模型并尽可能保持控制器的精简,您将能够更轻松地进行测试。

我在一天结束时对此提出的建议是在完成迁移后立即进行重构,否则您项目的快乐程度将会非常快地下降,您将失去兴趣。重构可能起初很难,但肯定会有所回报。

我的2美分。