我希望在Rails应用程序中,几个控制器之间共享与视图无关的代码。请问我应该将它放在哪个目录结构中?
编辑:所讨论的代码是所有控制器都会使用的代码,用于确定它们如何呈现模型数据。
我希望在Rails应用程序中,几个控制器之间共享与视图无关的代码。请问我应该将它放在哪个目录结构中?
编辑:所讨论的代码是所有控制器都会使用的代码,用于确定它们如何呈现模型数据。
lib
文件夹中。或者,如果控制器共享行为,则可以为其中一些创建一个公共超类。我一直在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
个人认为,如果与控制器相关,则可以将其放在控制器目录中,但是应标记为模块,例如app/controllers/what_am_i_module.rb
,因为它是特定于开发中的应用程序。
对我来说,lib似乎是一个放置框架/核心增强或猴子补丁的地方,这些内容不特定于应用程序。