1

在我正在工作的 Rails 应用程序之一中,我可以找到一个名为

asset.rb

里面config/initializers的目录,它包含以下详细信息:

ActionController::Base.asset_host = Proc.new { |source, request|
  if request.env["REQUEST_PATH"].include? ".pdf"
    "file://#{Rails.root.join('public')}"
  else
    "#{request.protocol}#{request.host_with_port}"
  end
}

谁能告诉我它的真正含义。我们的应用程序中有 PDF 报告生成功能。无论如何,我已经搜索了很多,找不到更好的答案。

请帮忙。谢谢 :)-

4

1 回答 1

1

看起来您的 pdf 文件(可能由您的 PDF 报告生成)存储在/public目录中。该代码所做的是首先检查请求的路径是否包含字符串“.pdf”。

如果REQUEST_PATH包含.pdf则设置Base.asset_hostfile://path_to_app/public否则,例如https://host:port

所以我认为某处正在做的是,如果有pdf文件请求,那么file://无论请求协议如何,都通过协议提供文件,并且对于任何其他文件使用请求协议。

您可以在您的应用程序中搜索Base.asset_host以查看它的使用位置和方式。

于 2013-08-20T03:39:00.573 回答