2016-12-24 11 views
1

私はIDの配列を収集することにより、スプラインチャートへのデータをレンダリングしようとしています:ではのMySQL、Highcharts:エラー

コントローラ

def student_feedback 
     difficulty_ids = current_user.school_user.homework_students.pluck(:difficulty) 
     @homeworks = HomeworkStudent.where("homework_id = (?)", difficulty_ids).first 
    end 

:「オペランドが1列(複数可)を含める必要があります」私のチャート:

... 
     } 
     }, 
     series: [{ 
      name: 'Difficulty', 
      data: [<%= @homeworks.to_json %>] 
     }] 
    }); 

しかし、私はこのエラーを取得しておいてください。

Mysql2::Error: Operand should contain 1 column(s): SELECT `homework_students`.* FROM `homework_students` WHERE (homework_id = (4,2,1,2,3)) ORDER BY `homework_students`.`id` ASC LIMIT 1 

収集されるデータは正しいです。これは単なる構文エラーですか?私はちょっと遊んだ。 "homework_id =?"から角括弧を削除する同じ結果を与える...必要に応じてより多くのコードを提供することができます。

おかげ

the12

@おかげで、この

def student_feedback 
     difficulty_ids = current_user.school_user.homework_students.pluck(:difficulty) 
     @homeworks = HomeworkStudent.where(["homework_id = ?", difficulty_ids]).first 
    end 

を試みたが、これは `それはhomework_id = 4,2,1言う

Mysql2::Error: Operand should contain 1 column(s): SELECT `homework_students`.* FROM `homework_students` WHERE (homework_id = 4,2,1,2,3) ORDER BY `homework_students`.`id` ASC LIMIT 1` 

をエラーを返します...これらの数値は実際には "難しさ"と呼ばれる列から来ています - おそらく何かが文のaboコントローラーにいますか?

+0

'.where'の後の部分に角括弧を入れ、疑問符のまわりのかっこは必要ありません。 'HomeworkStudent.where([" homework_id =? "、難易度])。最初の' – the12

+0

@ the12ありがとう!あなたはこのような意味ですか? @homeworks = HomeworkStudent.where(["homework_id =?"]、難易度)。最初に?これで私は["homework_id =?"]の定義されていないメソッド '% 'をエラーにします:Array" – Co2

+0

いいえ、上記のソリューションをコピーして貼り付けてください。構文は次のように動作します: 'where([" column_name =? "、column_value])'。あなたが疑問符でそれを書いている方法では、あなたは配列に入れなければなりません。文字列のバージョンがほしい場合は、代わりに '.where(" homework_id =難易度 ")。first'と書くことができます。 – the12

答えて

1

だけdifficulty_idsは、それが生成するSQL文によって証明されるように配列された... SQLエラーを読む:homework_id = difficulty_idsので

WHERE (homework_id = 4,2,1,2,3) 

を、それが配列です。 homework_idがwhere句内の1つの数字と等価であることを確認する必要があります。

+0

ありがとう、私は構文を知らない問題を参照してください。数字が正しいと私はグラフにプロットしようとしているもの... – Co2

+0

答えが、バグの意味だった質問に答えた場合、それは受け入れられたものとしてそれを選択する必要があります。適切なクエリを書く方法についての助けが必要な場合は、別の質問でなければならないと思います。必要な行、データベースに関する情報、難易度の計算方法などの詳細情報を提供する必要があります。新しい質問を読むほうが簡単です。 – the12

+0

うん、それは問題が何か...良いことの質問に答える。しかし、私はまだ立ち往生している:(私は別の質問をすることができ、それが助けるとdbテーブルの詳細を与えることができますか? – Co2