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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

7055閲覧

配列をgroup_byでグループ分けしたい(Ruby on Rails)

pppa

総合スコア13

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/03/08 01:04

編集2018/03/08 01:20

whereを使って、条件に該当するデータ(複数カラムをもつモデルの配列)を取り出したあとに、更に特定のカラム毎にグループ分けをしたく、group_byメソッドを使っているのですがうまくいきません。
具体的には以下②のところがうまくいかないのですが、group_byの用法で何か違いがあれば、ご教示いただけると助かります。

【やりたいこと&手順】
①コントローラー側
@questionary_choice = QuestionaryChoice.where(questionary_item_id: @q_item_id)
複数の@q_item_idを対象に、その番号をもつquestionary_choiceを取り出す。
質問番号1-3に関連する、選択肢が全て取り出される。(エラーなし)

②コントローラー側
@questionary_chai = @questionary_choice.group_by(:questionary_item_id)
①で取り出した質問番号1-3に関連する、選択肢全てを、質問番号毎に、グループ分けしたい。(wrong number of arguments (given 1, expected 0)のエラーあり)
questionary_item_idは、@questionary_choiceがもつカラム。

上手く取り出せると、こういうハッシュになっていると想定している

{質問番号1 => [questionary_choice1,questionary_choice2],質問番号2=> [questionary_choice3,questionary_choice4]}

③②で取り出した質問番号毎の、questionary_choiceのうち、特定のカラムのデータを順々に取り出す。(例ではcontent)
<% for v in @questionary_chai.to_a[i][1] %>
<td><%= v.content %>

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージを読みましょう。そこに答えはあります。
すなわち、wrong number of arguments (given 1, expected 0)なのです。

公式リファレンスにもあるとおり、group_byは引数を取りません。取るのはブロックだけです。だからRubyのインタプリタは「引数の数がおかしい!」と言っているわけですね。

なので、修正方法としては以下のとおりです。

rb

1# 普通にブロックを渡す 2@questionary_chai = @questionary_choice.group_by {|i| i.questionary_item_id} 3# または上の省略形 4@questionary_chai = @questionary_choice.group_by(&:questionary_item_id)

投稿2018/03/12 04:49

takara7

総合スコア107

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

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

pppa

2018/03/12 15:09

ありがとうございます。無事、解決しました。 こうやって使いました、的なページと使用方法をあわせたので、wrong number of arguments (given 1, expected 0)のエラー文でフリーズしてしまいましたが、ちゃんと公式リファレンスにさかのぼって使用方法を調べる事で解決できるのですね。解決方法含めて、ご指南いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問