现在,我有一个设置,允许用户使用CNAME将其应用程序直接指向我的Rails应用程序(也就是将www.example.com
指向托管在www.example2.com
上的我的应用程序)。
一切正常!但是,我想使用我的应用www.example2.com
作为主机来提供图像(出于CDN的原因)。
ActiveStorage似乎默认(并强制...)将主机作为当前主机,而不允许我对其进行更改。
我有:
config.action_controller.asset_host = 'https://www.example2.com'
Rails.application.routes.default_url_options[:host] = 'https://example2.com'
它非常适合静态资产!但是,ActiveStorage image_tag
仍在使用正在查看站点的任何域,在本例中为www.example2.com
。
关于如何使其始终使用asset_host投放的想法?
答案 0 :(得分:0)
使用ActiveStorage::Current.host
来使用CurrentAttributes
,class ApplicationController
before_action do
ActiveStorage::Current.host = 'https://example2.com'
end
end
是一种属性类型,可以在每个请求上设置/重置,并且可以在Rails应用中的任何地方使用:
ActiveStorage::Current.set
如果要在控制器外部使用它,请使用ActiveStorage::Current.set(host: "https://www.example2.com") do
item.file_ttachments.first.service_url
end
提供一个主机:
{
"123": {
"room_name": "Apartment #12",
"room_nights_nb": 1,
"room_night_price": "110.00"
},
"124": {
"room_name": "House #24",
"room_nights_nb": 2,
"room_night_price": "125.00"
}
}
发布参考文档:https://edgeapi.rubyonrails.org/classes/ActiveStorage/SetCurrent.html