初心者からのエンジニア日記

2020年6月末~TECH::CAMPにて本格的にプログラミング学習を開始。 販売職/店長を経て、駆け出しエンジニアの道へ一歩踏み出しました! 様々なアウトプットをしていきたいと思います! HTML/CSS,Ruby,Ruby on Rails,Java Script,jQuery,Haml/Scss,GitHub...

【Ruby】投稿画像が文字列で表示されてしまう問題の解決策

エラーは表題の通り、

本来、投稿した画像が表示されるべきはずの場所に

「/public/uploads/post/image/○○.jpg」

といったような形で、

ファイルが存在するディレクトリが表示されてしまうものです。

※エラー画面は出ません。

 

原因

postsテーブルに「image」という名前のカラムを作ったため。

 

解決策

カラム名を「image」にした場合に限り、「to_sメソッド」で表示を文字列に変換する必要がある。 

※to_sメソッド……文字列以外のオブジェクトを文字列に変換できるメソッド

 

解説

修正前】index.html.haml

- @posts.each do |post| 
  = post.text
  = post.image

問題は「image」というカラム名だったのでimage_tagを使い

以下のように修正したところ画像が表示されました!

 

修正後】index.html.haml

- @posts.each do |post|
  = post.text
  = image_tag(post.image.to_s)

 

エラーの際に確認したこと

- テーブルはformを使って送ったパラメータを受け取れているか

- コントローラーのファイルに記載したメソッドに誤りはないか(正しい値が遅れているか)

 

 以上!

少しでも他の方のヒントになるよう記録を残しておきます!

Hamlはインデントのエラーも出やすいので、

丁寧なコード記述を心がけたいですね!

 

 

参考URL

https://rails-ambassador.herokuapp.com/tips/HerokuCloudinaryCarrierwave