我想在我的Rails应用程序中共享与几个控制器之间的视图无关的代码。我应该在目录结构中的哪个位置放置它?
编辑:有问题的代码,如果所有控制器都使用它来确定 他们如何呈现模型数据
答案 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
因为它特定于开发中的应用程序。
答案 4 :(得分:0)
如果它将被所有控制器使用,请将其粘贴在application_controller.rb中
所有控制器都继承自ApplicationController,因此他们都可以访问它们。