社会人から始めたプログラミング

プログラミング、エンジニアに関することでの備忘録、シェアしたい情報などを共有するためのブログです。

rails の view で使える asset_url のパスがコントローラー経由だと絶対パスなのに、サービスクラスなどコントローラー外だと相対パス返してくる問題

問題

rails の ビュー で使える asset_url の pass が controller 経由だと絶対パスなのに、サービスクラスなど controller 外だと相対パスを返してくるので、期待している動きと違って画像などがうまく読み込まれない模様

=> html = ApplicationController.new.render_to_string(inline: , layout: , locals: , ...) とした時に、中身を見るとasset_url を使って画像を読み込む部分がcontrollerから呼ぶときとサービスクラスから呼ぶときとで異なっていることを発見した

ルートのurlを コントローラーのインスタンスの asset_host に指定してあげればok

・localなら http://localhost:3000/ と直接指定してみたり

・どこかに定義しているなら指定の場所からルートのurlを指定する

*request.protocol + request.host とか req.host_with_port とかはサービスクラスで request は関係ないので、今回は使えなかった。