Rails:如何在助手或控制器外部访问请求对象?

时间:2010-04-05 03:02:13

标签: ruby-on-rails request helpers

在我的application_helper.rb文件中,我有一个这样的函数:

def internal_request?
  server_name = request.env['SERVER_NAME']
  [plus more code...]
end

控制器,模型和视图中需要此功能。因此,我将此代码放在lib/目录中的实用程序函数文件中。但是,这不起作用:我抱怨request没有被定义。

如何访问request目录中文件中的lib/对象?

1 个答案:

答案 0 :(得分:2)

这里似乎最简单的事情就是将请求对象传递给方法。

def internal_request?(request)
 server_name = request.env['SERVER_NAME']
 [plus more code...]
end

假设是在调用此方法时已经发出请求,并且您可以将其传递给方法。

我试图想一个模型需要直接调用此方法的场景。似乎您可能想要检查它是否是控制器中的internal_request(如果您在视图中需要它,请将其标记为控制器中的helper_method),然后告诉您的模型它是internal_request。