在哪里放置不是模型,视图,控制器或帮助器的Rails代码?

时间:2009-07-24 14:20:08

标签: ruby-on-rails ruby model-view-controller

我想在我的Rails应用程序中共享与几个控制器之间的视图无关的代码。我应该在目录结构中的哪个位置放置它?

编辑:有问题的代码,如果所有控制器都使用它来确定 他们如何呈现模型数据

5 个答案:

答案 0 :(得分:8)

如果代码类似于带有实用程序方法的模块,可以放在lib文件夹中。或者,如果它们共享行为,您可以为某些控制器创建一个公共超类。

请发布您正在考虑的代码类型的示例。

答案 1 :(得分:5)

如果它是“所有控制器都使用的东西”,我会把它放在所有控制器使用的基类中。想到“application_controller”。

答案 2 :(得分:2)

我一直在lib中创建模块,以便为其他类提供代码。

这是一个缩写示例模块,它定义了可以从不同控制器实例化的视图的值。

module ControllerDefaultValues
  def default_value_for_some_controller()
    @controller_name = "some_controller"
  end
end

要使用此功能,只需在您的班级中包含该模块:

class SearchesController
  include ControllerDefaultValues
  #
  def search_some_controller
    default_value_for_some_controller()
    render(:partial => "search_results")
  end
end

这种方法的主要好处是它可以使您的控制器目录集中在控制器上,而模型目录则集中在逻辑上。

答案 3 :(得分:0)

我个人觉得它很好,如果它的控制器与把它放在你的控制器目录中有关,但是,标记为模块,例如app/controllers/what_am_i_module.rb因为它特定于开发中的应用程序。

对于我来说,lib似乎是一个我可以放置框架/核心增强功能或猴子补丁的地方。

答案 4 :(得分:0)

如果它将被所有控制器使用,请将其粘贴在application_controller.rb中

所有控制器都继承自ApplicationController,因此他们都可以访问它们。