我的问题:当使用Hotwire/Turbo渲染图像时,所有的URL都使用主机example.org而不是我的实际主机名进行渲染。常规视图很好,但是通过Turbo流呈现部分会导致像http://example.org/.../这样的ActiveStorage URL。
上下文:我有一个简单的Todo应用程序,具有工作视图,部分和turbo流,它们一起显示了Todo和相关用户的列表。当我将用户加入Todo时,turbo流呈现正确的部分,并将用户名和头像放在DOM中我想要的位置。但是,来自ActiveStorage的图像URL包含example.org主机名。
我已经在config/environments/*.rb中设置了我的标准URL选项,包括routes.default_url_options[:host]和config.action_mailer.default_url_options[:host]。我还学习了config/initializers/application_controller_renderer.rb文件,您可以在其中设置http_host参数;但是,我已经设置了http_host,https布尔值,仍然使用example.org呈现我的image_tag。
此外,我还发现了一些关于如何以编程方式操作默认渲染器的有限建议(以便修复该问题)。This source建议获取ApplicationController.renderer并覆盖属性,如下所示:
renderer = ApplicationController.renderer.new(
http_host: request.host_with_port,
https: (request.protocol == "https://"),
"rack.session": request.session
)但是broadcast_action_to方法似乎不接受renderer参数,所以这实际上对我在Turbo中没有帮助。
一定有我遗漏的配置,但我在Turbo或Hotwire文档中找不到它。
发布于 2021-08-03 18:54:00
我想config.action_controller.default_url_options了。一旦我将其配置为与其他default_url_options相同,我的链接就开始正确呈现。
https://stackoverflow.com/questions/68215105
复制相似问题