【问题标题】:In Rails, any way to use app/helpers/foo.rb methods in Controller vs in View?在 Rails 中,有什么方法可以在 Controller 和 View 中使用 app/helpers/foo.rb 方法?
【发布时间】:2011-04-12 22:07:42
【问题描述】:

好像app/helpers/foo.rb中的那些helper可以在View中使用,但是在Controller中不能使用?

在某些情况下,不同的控制器可能需要使用相同的方法,但只是传入不同的参数,那么在这种情况下,在控制器中使用助手不是有意义吗?

【问题讨论】:

    标签: ruby-on-rails controller helpers


    【解决方案1】:

    在控制器之间重用代码有两种主要方式。

    您可以创建ApplicationController 的子类,其中包含公共代码,然后您想要共享代码的控制器从新的控制器类继承。 (或者如果需要由所有控制器共享,则只需将代码添加到 ApplicationController 本身。)

    或者,您可以创建自己的模块(这就是所有帮助程序的本质)并将它们包含到您要在其中使用代码的控制器中。

    由于助手只是模块,您可以在控制器中包含助手,但助手更多地用于视图层而不是控制器,因此很少在控制器之间共享代码。

    【讨论】:

      【解决方案2】:

      这可能是有道理的,但它不会那样工作。 (如果有人知道怎么做,请随时发布)

      您可以将常用助手放在ApplicationController 中,它们可以从您应用中的任何控制器访问。

      【讨论】:

        【解决方案3】:

        如上所述,您可以将常用助手放在 ApplicationController 或子类中。我要添加它以使它们也可用于视图,您将它们放在类的顶部:

        helper_method :foo
        

        【讨论】:

        • 嗨 Lin,正如 Tim 所说,您可以将它们放在控制器中并定义为辅助方法 例如:ApplicationController
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-27
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多