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

rla*_*ter 7 ruby-on-rails request helpers

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

def internal_request?
  server_name = request.env['SERVER_NAME']
  [plus more code...]
end
Run Code Online (Sandbox Code Playgroud)

控制器,模型和视图中需要此功能.所以,我把这段代码放在lib/目录中的实用程序函数文件中.然而,这不起作用:我抱怨request没有被定义.

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

Tor*_*inz 3

在这里工作的最简单的事情是将请求对象传递给方法。

def internal_request?(request)
 server_name = request.env['SERVER_NAME']
 [plus more code...]
end
Run Code Online (Sandbox Code Playgroud)

假设每当调用此方法时都会发出请求,并且您可以将其传递给该方法。

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

  • 更喜欢一个允许直接实例化机架请求对象的答案...... (2认同)