#controllerを使ってassets下に保存されている画像をviewに出力する方法
Railsの自作アプリ開発を進める中で、パラメーターの値によってviewに出力する写真を変えたいと考えていました。
ネットを探っている中で例がなかったため、記事にすることにしました。
#試したこと
バージョン:Ruby:2.6.3 Rails:5.1.7
controllerでassets/imagesに保存されている画像を変数に格納し、viewに出力する
def image
@image = URI("/assets/sample1.jpg")
end
コントローラーでは、変数に上記のようにURIを使って代入できることがわかりました。
初めはurl("/assets/sample1.jpg")と書いたところ、NoMethodErrorが発生。
undefined method `url' for #< SampleController:0x00007fc44b041bd8> Did you mean? URIと表示され、それを試したところ、うまく表示されたという経緯です。
<%= image_tag @image %>
あとは、image_tagを使用して変数を書けば無事に出力できます。
自作アプリではcontrollerで受け取ったパラメーターをcase文を使用することで画像を変えています。
普通はviewにてimage_tagで画像を出力できます。controllerを用いて、条件によって出力する画像を変えたいと考える方が他にもいらっしゃれば、お力になれたら幸いです。