0

このherokuエラーが発生しています。

これらは私の Heroku ログです。

2013-10-15T19:51:45.703129+00:00 app[web.1]:  19: <% cities = SubjectGradeCity.includes(:city).collect(&:city).uniq %>
2013-10-15T19:51:45.703129+00:00 app[web.1]:  20: <% grades = SubjectGradeCity.includes(:grade).where(:city_id).collect {|s| {:name => s.grade.name, :id => s.grade.id}}.uniq %>
2013-10-15T19:51:45.703129+00:00 app[web.1]: ActionView::Template::Error (PG::Error: ERROR:  argument of WHERE must be type boolean, not type integer
2013-10-15T19:51:45.703129+00:00 app[web.1]: LINE 1: ...ade_cities".* FROM "subject_grade_cities"  WHERE ("subject_g...
2013-10-15T19:51:45.703129+00:00 app[web.1]:                                                              ^
2013-10-15T19:51:45.703129+00:00 app[web.1]: 17: <%= simple_form_for :assignments_filter , :html => {:id => "assignments_filter_form"}, :url => {:controller => "requests", :action => "assignments2"  } do |f| %>

これはビューの私のコードです


<% cities = SubjectGradeCity.includes(:city).collect(&:city).uniq %>
<% grades = SubjectGradeCity.includes(:grade).where(:city_id).collect {|s| {:name => s.grade.name, :id => s.grade.id}}.uniq %>
<% subjects = SubjectGradeCity.includes(:subject).where(:city_id).collect {|s| {:name => s.subject.name, :id => s.subject.id}}.uniq %>
<% grades.unshift({:name => "You have to select your city first", :id => ""}) if grades.empty? %>
<% subjects.unshift({:name => "You have to select your city first", :id => ""}) if subjects.empty? %>

助けてください..

4

2 に答える 2

4

where句は比較するものを何も呼び出していないため、PGは結果に何を含めるかわかりません。where句は true/false に評価される必要があります。

あなたはおそらく次のようなものを探しています:

<% cities = SubjectGradeCity.includes(:city).collect(&:city).uniq %>
<% grades = SubjectGradeCity.includes(:grade).where(:city_id => cities).collect {|s| {:name => s.grade.name, :id => s.grade.id}}.uniq %>
<% subjects = SubjectGradeCity.includes(:subject).where(:city_id => cities).collect {|s| {:name => s.subject.name, :id => s.subject.id}}.uniq %>

そうすれば、where句を比較して、都市に含まれているかどうかが最初の行に起因するかどうかを確認しています...ただし、最初の行は都市ではなくSubjectGradeCityオブジェクトのセットを返しているため、どちらも機能するかどうかはわかりませんオブジェクト。でも、そこからわかるかも?

編集:これらの種類のメソッドをビューの外に移動することについては、NickM のアドバイスも参考にしてください。それらは間違いなくモデル層にあるはずです。

于 2013-10-15T20:19:28.403 に答える
2

ビューにデータベース クエリを入れてはいけません。少なくともヘルパーに移動しますが、理想的にはモデルで定義する必要があります。とはいえ、モデルに入れている限り、Heliosの答えは良いです。

于 2013-10-15T20:29:55.017 に答える