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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

1回答

823閲覧

グループの中のメンバー一覧を表示させたい。

rr2

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/03 06:17

前提・実現したいこと

Ruby on Railsでアプリを開発中です。
グループ(今回familyとしています)を作成し、その中でフロントのサイドバーにグループ中のメンバーの名前を表示させて、クリックすると各々のページを右側(メイン)に表示するようにしたいのですが以下のエラーがでてしまいます。
まだメインページの中身は実装していませんが、ビューのみ作成済です。

グループの中の人がいる場合に、グループのメンバーを並べる方法を
ご教授願います。

※初心者です。かなり荒削り、意味不明なコードになっているかもしれないです。
大変恐縮ですがどうかよろしくお願いします。

発生している問題・エラーメッセージ

NoMethodError in Families#index Showing /Users/xxxxxx/temp-management/app/views/records/_side_bar.html.haml where line #15 raised: undefined method `users' for nil:NilClass

該当のソースコード

Ruby

1.chat-side 2 .side-header 3 .side-header__box 4 %p.side-header__box__user-name 5 = current_user.name 6 %ul.side-header__box__name__menu 7 %li.side-header__box__name__new-family 8 = link_to new_family_path do 9 = icon('fas', 'edit', class: 'icon') 10 %li.side-header__box__name__edit-user 11 = link_to edit_user_path(current_user) do 12 = icon('fas', 'cog', class: 'icon') 13 14 .families 15 - @family.users.each do |user| 16 = link_to '#' do 17 .family 18 .family__name 19 = user.name 20 .family__message 21 %p 22 bbbbb

補足情報(FW/ツールのバージョンなど)

・Rails 5.0.7.2
・ruby 2.5.1p57

families_controller.rb

Ryby

1class FamiliesController < ApplicationController 2 def index 3 end 4 5 def new 6 @family = Family.new 7 @family.users << current_user 8 end 9 10 def create 11 @family = Family.new(family_params) 12 if @family.save 13 redirect_to root_path, notice: 'グループを作成しました' 14 else 15 render :new 16 end 17 end 18 19 def edit 20 @family = Family.find(params[:id]) 21 end 22 23 def update 24 @family = Family.find(params[:id]) 25 if @family.update(family_params) 26 redirect_to root_path, notice: 'グループを更新しました' 27 else 28 render :edit 29 end 30 end 31 32 33 private 34 def family_params 35 params.require(:family).permit(:name, user_ids: []) 36 end 37end

他に必要なコードがございましたら、すぐ掲載しますのでお教えください。

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

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

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

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

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

guest

回答1

0

indexメソッド内で @familiy 変数が定義されていないため

ruby

1 - @family.users.each do |user|

でnilに対してusersメソッドを呼び出してエラーになっていると思われます。

ruby

1def index 2 @family = Familiy.all 3end

のようにすればどうでしょうか?

投稿2020/05/03 06:33

kazchimo

総合スコア172

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

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

rr2

2020/05/03 06:38 編集

回答ありがとうございます。 教えていただいた内容で変更しましたところ、 このようなエラーが出ました。 ``` NameError in FamiliesController#index uninitialized constant FamiliesController::Familiy ``` 自分でも少し調べてみますが、なにかわかるようであれば このまま教えていただきたいです。
kazchimo

2020/05/03 06:39

あ、すいませんtypoしてました。 FamiliyをFamilyに変更したらどうなりますか?
rr2

2020/05/03 06:41

ありがとうございます。 最初と同じエラーになりました。
kazchimo

2020/05/03 06:46

```ruby def index @family = Family.includes(:users).all end ``` これだとどうですか?
rr2

2020/05/03 06:51

ありがとうございます。 同じエラーがでてしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問