質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

5623閲覧

NoMethodError in Users::Favorites#indexというエラーが出てしまいます

culuculu

総合スコア52

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

2クリップ

投稿2016/01/21 22:37

userのお気に入りのお店を表示させようとしているのですが、このようなエラーが出てしまい困っています。

undefined method `each' for #User:0x007fd8e0a2c680

eachメソッドの書き方に問題があるのではないかと調べても書き方はあっているし、コントローラーの方にも@usersを定義しているのになぁという状態です。
どなたか原因を解明していただけないでしょうか?
NoMethodErrorから抜け出したいです...
以下にコントローラーとビューのコードを添付しておきます。

controller.rb

1class Users::FavoritesController < ApplicationController 2 def index 3 @users = User.find(params[:user_id]) 4 @users.favorite_stores 5 end 6end

index.html.erb

1<h1>Users::Favorites#index</h1> 2<p>Find me in app/views/users/favorites/index.html.erb</p> 3 <% @users.each do |user| %> 4 <p><%= user.name %></p> 5 <% end %>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

コードを見る限り@usersはUserクラスのオブジェクトのなのでeachは定義されていません。
eachはArrayやHashに定義されているメソッドなので、エラーになります。

@usersに入っているのはUserクラスのオブジェクトなので単数の@userが好ましいと思います。
@users.favorite_storesではお気に入りの店舗を取得していますが、変数に格納していません。
@favorite_storesなので、変数に格納する必要があります。

ruby

1 class Users::FavoritesController < ApplicationController 2 def index 3 @user = User.find(params[:user_id]) 4 @favorite_stores = @user.favorite_stores 5 end 6end

erb

1<h1>Users::Favorites#index</h1> 2<p>Find me in app/views/users/favorites/index.html.erb</p> 3 <% @favorite_stores.each do |favorite_store| %> 4 <p><%= favorite_store.name %></p> 5 <% end %>

投稿2016/01/22 00:29

suzUkai74

総合スコア135

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

culuculu

2016/01/22 01:24

ありがとうございます! @userの末尾のsをのけなければならない理由や、新たなstoreの定義の仕方など本当に役に立ちました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問