ruby-on-rails - rails : how can I access the request object outside a helper or controller?

标签 ruby-on-rails request helpers

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

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

Controller 、模型和 View 中需要此函数。因此,我将此代码放在 lib/ 中的实用程序函数文件中。目录。但是,这不起作用:我收到了关于 request 的投诉没有被定义。

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

最佳答案

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

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

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

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

关于ruby-on-rails - rails : how can I access the request object outside a helper or controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576725/

相关文章:

python - 在 Twisted 中发起 HTTPS 请求

ruby-on-rails - [] :Array 的 Rails 未定义方法 `update_attributes'

ruby-on-rails - Ruby 中数组的深拷贝

http - golang 服务器不解码 json(文字 false 中的无效字符 ' '(预期 'a')400")

javascript - Laravel 在 POST 请求后注销

ruby-on-rails - Rails 'raw' 助手

ruby-on-rails - rails 中是否有时间提前词(与 time_ago_in_words 相反)

ruby-on-rails - 如何在 rails 3 Controller 生成器中使用 `--helper` 标志?

ruby-on-rails - AWS elasticsearch 服务抛出 Faraday::ConnectionFailed: 无法打开到 https:80 的 TCP 连接(getaddrinfo: 名称或服务未知)

ruby-on-rails - 在 Rails 中使用 Pry 和 Docker compose