代码之家  ›  专栏  ›  技术社区  ›  rlandster

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

  •  7
  • rlandster  · 技术社区  · 14 年前

    在我的 application_helper.rb 文件我有这样的功能:

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

    控制器、模型和视图中需要此功能。所以,我把这段代码放在 lib/ 目录。但是,这不起作用:我收到了关于 request 未定义。

    我怎样才能进入 请求 文件中的对象 国际清算银行/ 目录?

    1 回复  |  直到 12 年前
        1
  •  2
  •   ToreyHeinz    12 年前

    这里看起来最简单的方法是将请求对象传递给方法。

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

    假设在调用这个方法时,已经发出了一个请求,并且您可以将它传递给该方法。

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