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_filter
和after_filter
,它们通常在这类事情中很有用
ApplicationController就在这里,因为每个Controller都从它inheritance。