初めに
deviseの編集ページで、プロフィール画像をプレビュー表示させる時に以下のエラーが出ました。
ArgumentError in Users::Registrations#edit
Can't resolve image into URL: undefined method `to_model' for #<ImageUploader:数字>
Did you mean? to_xml
今後のため、解決方法を記録しておこうと思います。
使用したもの
Ruby on Rails
JavaScript
devise
Careywave(uploader)
エラー内容
ArgumentError in Users::Registrations#edit
直訳
UsersのRegistrations#edit 引数エラー
画像をURLに解決できません:#<ImageUploader:0x00007fb52739e868>の未定義のメソッド `to_model'
もしかして? to_xml
解決方法
こちらの記事を参考にさせていただきました。
エラー解決!「ArgumentError in Users#index」in Rails 5.2
<%= image_tag current_user.image, id: :img_prev %>
↓
<img src="<%= current_user.image %>" id ='img_prev'>
解決に辿り着くまで検証したこと
以下はエラーにあった際の考え方です。ご興味がありましたらご覧ください!
1行目 <% if current_user.image.present? %>
2行目 <%= image_tag current_user.image, id: :img_prev %> #エラーが表示された箇所
データが格納されているか確認
→current_user.imageは正しく格納されている
1行目の「current_user」ではエラーが出ていないため、この記述はOK
→データは正しく格納されているので、表示方法に問題がある?
表示方法について考える
・引数エラーということだったのでimage_tag以降の「current_user.image, id: :img_prev」をかっこで囲む
→文法エラーになる
uploaderに関する引数エラー、image_tagの表示方法を検索する
→そこでエラー解決!「ArgumentError in Users#index」in Rails 5.2の記事を見つける
原因
image_tagの表示方法が異なっていたことでした。
以下の表記に変更したところ、ユーザーのプロフィール画像を編集ページに表示することができました。
<%= image_tag current_user.image, id: :img_prev %>
↓
<img src="<%= current_user.image %>" id ='img_prev'>
Railsのバージョン違いによって表示方法が変わるようでした。
まとめ
最後までご覧下さりありがとうございました。
エラーは学びが多いので、今後も解決するまでの過程を積極的に残していきたいと思います。
初学者のため、記入漏れや記述ミスがありましたら教えていただけると助かります。
こちらの記事がどなたかの参考になりましたら幸いです。