【发布时间】:2010-08-05 06:51:34
【问题描述】:
我尽量将视图代码和控制器代码分开,但有时我会遇到需要在控制器和视图中使用相同功能的情况。我应该把这个函数放在哪里,以便我可以从控制器和视图中访问它?
【问题讨论】:
标签: ruby-on-rails model-view-controller
我尽量将视图代码和控制器代码分开,但有时我会遇到需要在控制器和视图中使用相同功能的情况。我应该把这个函数放在哪里,以便我可以从控制器和视图中访问它?
【问题讨论】:
标签: ruby-on-rails model-view-controller
你可以把它放在一个控制器中,让它作为一个助手使用。如果您需要它在多个控制器之间可用,并且它们的视图放在应用程序控制器或其他继承的控制器中:
helper_method :shared_function
【讨论】:
根据您的情况,例如,如果函数返回一个不需要任何控件的标准变量值,您可以直接从视图中调用它,相反,如果您有一个返回例如数组的函数这需要控件,在您在视图上显示您想要的内容之前,从模型中调用它是明智的。
【讨论】:
我实际上认为模块是在控制器之间共享代码的最佳方式。如果您想在视图之间共享代码,助手是很好的选择。 Helpers 基本上都是美化的模块,所以如果你不需要视图级别的访问,我建议在你的 lib 文件夹中放置一个模块。
如果代码真的是一组不需要访问对象状态的实用程序,我会考虑将它放在一个单独调用的模块中。
如果代码需要状态并且用于所有控制器的子集,但不是非常密切相关,请将其放入模块中并将其包含在必要的控制器中。
【讨论】: