Rails 3:调用控制器内的函数

如果我想在控制器内部调用函数,我应该把它们放在哪里?

如果你想让它在控制器本地,那么你需要做的就是将它添加到你想要使用的控制器。

private def myfunction function code..... end 

对于所有控制器,您可以将它放在应用程序控制器中,因为所有控制器都是子类。

ApplicationController的

 protected def myfunction function code..... end 

如果要在视图中访问,则可以创建帮助程序

ApplicationHelper

 def myfunction function code... end 

@jonnii,例如,我想调用一个返回生成的唯一代码的函数。

如果生成的代码仅在控制器上使用 ,则将函数放在控制器中,作为受保护的函数(最简单的方法是将它放在ApplicationController中)。

如果你需要在视图上调用函数,那就把它放在帮助器上,就像ddayan说的那样。

如果您还需要从模型调用该函数,那么最简单的方法是将一个模块放在/ lib /目录中。

 # /lib/my_module.rb module MyModule def generate_code 1 end end 

您还需要在初始化程序中包含它:

 #/config/initializers/my_module.rb require 'my_module' 

从那一刻开始,您可以使用以下function:

 MyModule::generate_code 

如果您经常这样做,请考虑创建一个gem。

 class YourController < ActionController::Base def your_action your_function end private def your_function end end 

另外看看before_filterafter_filter ,它们通常在这类事情中很有用

ApplicationController就在这里,因为每个Controller都从它inheritance。