Rails中不同控制器上的DRY表单处理4

时间:2015-04-30 15:38:56

标签: ruby-on-rails variables parameters dry controllers

我有两个共享相似输入参数的表单/视图;但是每个视图应该由一个单独的控制器处理,因为每个视图都需要额外的逻辑。每个控制器都有大量与之相关的输入参数。什么是最佳做法?

我知道这个问题听起来像是"控制器之间共享变量"事情;但是,如果我使用before_filter方法;我必须再次声明表单中的每个输入参数。如果我在父应用程序控制器中定义一个新方法或为输入参数提取创建一个辅助方法;子控制器中的其他方法无法访问变量...是否有更优雅的解决方案?

1 个答案:

答案 0 :(得分:1)

我经常发现在控制器之外需要一些可重用的业务逻辑的情况。在这些情况下,我将在/ lib文件夹中定义一个新对象,以便我可以在多个位置使用它。例如,

# lib/my_business_logic/do_stuff.rb
module MyBusinessLogic
    class DoStuff
        def self.dostuff(params)
           # do stuff
        end
     end
end

然后我可以致电:

result = MyBusinessLogic::DoStuff.dostuff(params)