【问题标题】:If I have a function that I use both in the controller and in the views, where should I put it?如果我有一个在控制器和视图中都使用的函数,我应该把它放在哪里?
【发布时间】:2010-08-05 06:51:34
【问题描述】:

我尽量将视图代码和控制器代码分开,但有时我会遇到需要在控制器和视图中使用相同功能的情况。我应该把这个函数放在哪里,以便我可以从控制器和视图中访问它?

【问题讨论】:

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


    【解决方案1】:

    你可以把它放在一个控制器中,让它作为一个助手使用。如果您需要它在多个控制器之间可用,并且它们的视图放在应用程序控制器或其他继承的控制器中:

    helper_method :shared_function
    

    【讨论】:

    • 正是我想要的,谢谢!
    【解决方案2】:

    根据您的情况,例如,如果函数返回一个不需要任何控件的标准变量值,您可以直接从视图中调用它,相反,如果您有一个返回例如数组的函数这需要控件,在您在视图上显示您想要的内容之前,从模型中调用它是明智的。

    【讨论】:

      【解决方案3】:

      我实际上认为模块是在控制器之间共享代码的最佳方式。如果您想在视图之间共享代码,助手是很好的选择。 Helpers 基本上都是美化的模块,所以如果你不需要视图级别的访问,我建议在你的 lib 文件夹中放置一个模块。

      如果代码真的是一组不需要访问对象状态的实用程序,我会考虑将它放在一个单独调用的模块中。

      如果代码需要状态并且用于所有控制器的子集,但不是非常密切相关,请将其放入模块中并将其包含在必要的控制器中。

      【讨论】:

      • -1。这个答案的第一段是从this answer逐字复制的,另外两段是从this answer复制的。您一直在引用其他人的答案而没有注明出处。请停止这样做。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 2011-09-04
      • 2019-07-11
      相关资源
      最近更新 更多