Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4中不同控制器上的干成型处理_Ruby On Rails_Variables_Parameters_Dry_Controllers - Fatal编程技术网

Ruby on rails Rails 4中不同控制器上的干成型处理

Ruby on rails Rails 4中不同控制器上的干成型处理,ruby-on-rails,variables,parameters,dry,controllers,Ruby On Rails,Variables,Parameters,Dry,Controllers,我有两个表单/视图,它们共享相似的输入参数;但每个视图都应该由单独的控制器处理,因为每个视图都需要独特的附加逻辑。每个控制器都有大量与之相关的输入参数。最佳做法是什么 我知道这个问题听起来像是“控制器之间共享变量”的事情;但是如果我使用before_filter方法;我必须再次声明表单中的每个输入参数。如果我在父应用程序控制器中定义了一个新方法,或者为输入参数提取创建了一个助手方法;子控制器中的其他方法无法访问变量。。。有更优雅的解决方案吗?我经常发现在控制器之外需要一些可重用的业务逻辑。在这些

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


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

我经常发现在控制器之外需要一些可重用的业务逻辑。在这些情况下,我将在我的/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)

我非常确定,如果您在应用程序控制器中定义一个方法,它的变量是可访问的。我已经有了一个方法,只要在每个控制器中声明before_操作,就可以跨控制器定义@current_user,而不会出现问题。