1

私の問題: Hotwire/Turbo を使用して画像をレンダリングすると、すべての URLexample.orgが実際のホスト名ではなくホストでレンダリングされます。通常のビューは問題ありませんが、Turbo ストリームを介してパーシャルをレンダリングすると、http://example.org/.../.

コンテキスト: 私は、Todo と関連付けられたユーザーのリストを一緒に表示する作業ビュー、部分ストリーム、およびターボ ストリームを備えた単純な Todo アプリを持っています。ユーザーを Todo に参加させると、ターボ ストリームが正しいパーシャルをレンダリングし、ユーザーの名前とアバターを DOM の必要な場所に配置します。ただし、ActiveStorage からのイメージ URL にはexample.orgホスト名が含まれています。

config/environments/*.rb、 、 を含むroutes.default_url_options[:host]で、標準の URL オプションを設定しましconfig.action_mailer.default_url_options[:host]た。また、パラメーターconfig/initializers/application_controller_renderer.rbを設定できるファイルについても学びました。http_hostただし、ブール値を設定http_hostしましたがhttps、それでも Turbo はimage_tagexample.org でレンダリングしています。

さらに、(問題を修正するために) デフォルトのレンダラーをプログラムで操作する方法についての限られたアドバイスを見つけました。このソースは、次のようにプロパティを取得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 のドキュメントには見つかりません。

4

1 に答える 1