我的问题:使用 Hotwire/Turbo 渲染图像时,所有 URL 都使用主机而example.org不是我的实际主机名进行渲染。常规视图很好,但通过 Turbo 流渲染部分视图会导致 ActiveStorage URL,例如http://example.org/.../.
上下文:我有一个简单的 Todo 应用程序,带有工作视图、部分视图和涡轮流,它们一起显示 Todo 和关联用户的列表。当我将用户加入 Todo 时,turbo 流会渲染正确的部分,并将用户的姓名和头像放入我想要的 DOM 中。但是,ActiveStorage 中的图像 URL 包含example.org主机名。
我已在 中设置了标准 URL 选项config/environments/*.rb,包括routes.default_url_options[:host]、 和config.action_mailer.default_url_options[:host]。我还了解了文件config/initializers/application_controller_renderer.rb,可以在其中设置http_host参数;但是,我已经设置了http_host布尔值,Turbo 仍然使用 example.orghttps渲染我的内容。image_tag
此外,我发现有关如何以编程方式操作默认渲染器(为了解决问题)的建议有限。该消息来源说要获取ApplicationController.renderer并覆盖属性,如下所示:
renderer = ApplicationController.renderer.new(
http_host: request.host_with_port,
https: (request.protocol == "https://"),
"rack.session": request.session
)
Run Code Online (Sandbox Code Playgroud)
但这些broadcast_action_to方法似乎不接受renderer参数,所以这实际上对我在 Turbo 中没有帮助。
一定有一个配置我丢失了,但我没有在 Turbo 或 Hotwire 文档中找到它。
我正在尝试将 Hotwire/Turbo 合并到现有的 Rails 应用程序中。我已将涡轮框架添加到简单的编辑页面,但现在当我单击后退按钮时,它会消失而不是带我到目标页面。该链接很简单link_to "Back", my_model_show_path(model_instance)。
我看到网络请求发生并且成功。DevTools 的“网络”选项卡中的页面预览显示正在加载并呈现为 html 的正确页面。浏览器只是不带我到新位置。
我怎样才能像以前一样工作?我觉得即使我使用 Hotwire/Turbo,我也应该能够使用常规链接重定向应用程序中的任何位置。