【问题标题】:DRY Form Processing on Different Controllers in Rails 4Rails 4 中不同控制器上的 DRY 表单处理
【发布时间】:2015-04-30 15:38:56
【问题描述】:

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

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

【问题讨论】:

  • 我很确定,如果您在应用程序控制器中定义一个方法,它的变量是可访问的。只要在每个控制器中声明了 before_action,我一直有一个跨控制器定义 @current_user 的方法而不会发生意外。

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


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多