エラー解決!「ArgumentError in Users#index」in Rails 5.2

プログラミング

Techpitの「Tinder風マッチングアプリを作ってみよう!」学習中に発生したエラー。

ArgumentError in Users#index

学習者は、同じところで同じエラーを質問していました。

しかし、解決のコメントがありませんでした。

もふぃ
もふぃ

Techpitの感想については、別記事で紹介したいと思います

すごく限定的ですが、解決したためエラーと解決法を記します。

エラーメッセージ

argumenterror

文字に起こすと下記になります。

ArgumentError in Users#index
Showing /Users/xxxxxxxxx/RubyonRails/techpit/techpit-match/app/views/users/index.html.erb where line #13 raised:

Can't resolve image into URL: undefined method `to_model' for #<ImgNameUploader:0x00007ffa5b8b4860>
Did you mean?  to_xml
Extracted source (around line #13):
       
        <li data-user_id="<%= user.id %>">
          <div class="userName"><%= user.name %></div>
          <%= image_tag user.img_name %>
          <div class="like"></div>
          <div class="dislike"></div>
        </li>

Rails.root: /Users/xxxxxxxxx/RubyonRails/techpit/techpit-match

Application Trace | Framework Trace | Full Trace
app/views/users/index.html.erb:13:in `block in _app_views_users_index_html_erb___3480038969990192115_70356404566240'
app/views/users/index.html.erb:10:in '_app_views_users_index_html_erb___3480038969990192115_70356404566240'
Request
もふぃ
もふぃ

何が原因か分かりますか?

エラーの原因

教材の環境はRailsの5.1.6でした。

しかし、私の作業環境は5.2.4でした。

バージョン違いによるエラーでした。

上記エラーメッセージの中にimage_tagがあります。

        13  <%= image_tag user.img_name %>

しかし、Railsの5.2以降image_tagメソッドではURLを指定しなくてはいけなくなったようです。

つまり、バージョンの違いによるエラーでした。

参考記事

ActionView::Template::Error: Can't resolve image into URL: undefined method `to_model' for # Did you mean? to_xml · Issue #588 · pivorakmeetup/pivorak-web-app
View details in Rollbar: NoMethodError: undefined method `to_model' for #<DefaultImageUploader:0x00000005a171b0> Did you mean? to_xml File &q...

解決方法

解決方法1:Railsのバージョン変更

純粋にRailsのバージョンを教材と同じ5.1に戻せば直るはずです。

しかし、なぜ後戻りせにゃあかんのじゃ。ということで、次の方法を取りました。

解決方法2:”今風” に書き直す

自分の環境に合わせて、修正します。

<image src="<%= user.img_name %>">

こうですね。

感想

バージョン指定って大事だなぁと改めて思いました。

これにてエラーは解決したのですが、まだどうも画像の表示がおかしい…

それはまた別のエラーの気がしますので、とりあえずこれにて完結。

しかし、たくさん同じエラーが質問で投げかけられているのに、解決策を示さない教材はどうなのよ…。

参考資料

Can't resolve image into URL: undefined method `to_model'
I am receiving this error: Can't resolve image into URL: undefined method `to_model' for #<PortfolioUploader:0x007fd1538a2a60> Did you mean? to_xml I a...
Can't resolve image into URL: undefined method `to_model'
I am receiving this error: Can't resolve image into URL: undefined method `to_model' for #<PortfolioUploader:0x007fd1538a2a60> Did you mean? to_xml I a...
RailsアプリでTwitterから画像を取得する方法|teratail
Rails 5.2twitter gem導入済み RailsでTwitterのクライアントアプリを開発しています。プロフィール画像をTwitterから取得し、アプリで表示させたいと思い、次のように書きました。 クライアントから取得したユーザー情報.profile_image_

コメント