0

学習管理システムに取り組んでいます。RoRの人ではありません。受けたクイズに基づいて平均スコアを生成するHAMLのラインを用意します。

="#{(QuizResult.average('score', :conditions => "user_id = #{@user.id}") * 100).round}%"

quiz_resultsテーブルには、used_idとscoreの列があります。

ただし、quiz_resultsテーブルにレコードがない場合、ページはレンダリングされません。そのユーザーIDにスコアが存在するかどうかを確認し、存在する場合は平均を表示したいと思います。存在しない場合は「クイズなし」と表示したい。これが私が持っているものです:

19:             %td
20:                 -if QuizResult('score', :conditions => "user_id = #{@user.id}").exists?
21:                     ="#{(QuizResult.average('score', :conditions => "user_id = #{@user.id}") * 100).round}%"
22:                 -else
23:                     %em No quizzes taken

次のエラーが発生します。

app / views / manage_users /show_all_users.hamlの20行目のActionView:: TemplateError(#ActionView :: Base:0x7028c7f5cb88>の未定義のメソッド `QuizResult'):"

私はこれで一日中苦労してきました。助言がありますか?RoRnoobからよろしくお願いします。

4

2 に答える 2

1

QuizResultモデルクラスだと思います。その場合、インスタンスを検索する方法として使用することはできません。

オブジェクトを特定の条件で検索するには、さまざまな方法があります。次に例を示します。

- if QuizResult.find_by_user_id(@user_id).present?

null (または Ruby で参照される nil) をチェックするには、Ruby 自体が提供するメソッド、またはオブジェクトが nil、空の文字列、または空のコレクションでない限り true を返すnil?Rails の便利なメソッドを使用できます。present?

于 2012-08-29T20:49:41.130 に答える
0

あなたの見積もりをチェックするかもしれません。ハッシュについては、condiitions二重引用符ではなく単一引用符を使用する必要があるようです。

于 2012-08-29T20:45:50.947 に答える