Can't resolve image into URL: undefined method `to_model'
画像表示ができないエラーである。
●前提
・carrierwaveで画像を投稿できる機能をつけて、投稿画像を一覧画面で表示しようとしています。
・seedファイルを使って初期表示用のアイテムをDBに登録済みである。そこで入れた画像データは’いらすとや’の画像のURLである。
●エラー部分
この部分テンプレートで一覧記事の一個一個を定義しています。その画像部分で「表示がうまくできないよ!」と言っています。
ImageUploaderの'to_model' methodというのがUndefinedだよって言ってます。
●思考
Carrierwaveの仕組みは、formのfile_fieldから直接ファイルを投稿できるっていうものです。画像のURLを文字列として入力して保存するわけじゃない。なので、表示画像もそれにあわせて、Carrierwaveの機能で保存したファイルを直接呼び出している。
しかし、seedファイルに保存してたレコードの画像はURLを保存していた。URLをCarrierwaveの機能で呼び出そうとしたからエラーになったのである。
●解決
① 該当部分に .url を追加する
= item.images.present? ? (image_tag item.images.first.image.url) : (image_tag "no_image.jpg")
これによりURLの値でも取得してくれる。でも画像はちゃんと表示できなかった。やめた。
② seedファイルの中身を治した
そうです。元から入れるレコードが悪さしていたので、面倒臭がらずそれを直すべきなのです。
テーブルをリセットして、Seedファイルを直して、完了。
扱うファイル形式とかデータ型とかももっと意識していかないとダメだなぁ。備忘備忘