首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不推荐ActiveStorage::Current.host=,我如何使用ActiveStorage::Current.url_options?

不推荐ActiveStorage::Current.host=,我如何使用ActiveStorage::Current.url_options?
EN

Stack Overflow用户
提问于 2022-04-13 16:01:00
回答 1查看 2.1K关注 0票数 3

我使用url方法在erb文件中呈现活动记录附件的url。

代码语言:javascript
运行
复制
#controller    
class RecordMetadataController < ApplicationController
        before_action do
        ActiveStorage::Current.host = request.base_url
      end
    .
    .
    .
    end


#view
    <iframe src="<%= file.url expires_in: 30 ,disposition: :inline %>" width="600" height="750" style="border: none;"></iframe>

Rails在我的控制台中给警告,所以我试图更新我的代码,但我无法使它工作。

代码语言:javascript
运行
复制
***DEPRECATION WARNING: ActiveStorage::Current.host= is deprecated, instead use ActiveStorage::Current.url_options***

更新代码

代码语言:javascript
运行
复制
#controller
...
ActiveStorage::Current.url_options = request.base_url
...

新误差

在web控制台中,我正在尝试获取文件的完整url

代码语言:javascript
运行
复制
>> file.url
ArgumentError: Cannot generate URL for K01_D01_G12.pdf using Disk service, please set ActiveStorage::Current.url_options.

有人能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 22:52:35

ActiveStorage::Current.url_options实际上是一个哈希,它为protocolhostport提供了单独的键。因此,你需要:

代码语言:javascript
运行
复制
before_action do
  ActiveStorage::Current.url_options = { protocol: request.protocol, host: request.host, port: request.port }
end

或者,ActiveStorage提供了一个关注点(ActiveStorage::SetCurrent),它就是这样做的。因此,您应该能够执行以下操作:

代码语言:javascript
运行
复制
class RecordMetadataController < ApplicationController
  include ActiveStorage::SetCurrent
  ...
end
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71860516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档