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

我收到以下错误:

“ActionView::TemplateError(#ActionView::Base:0x7028c7f5cb88> 的未定义方法 `QuizResult')在 app/views/manage_users/show_all_users.haml 的第 20 行:”

我整天都在为此苦苦挣扎。有什么建议么?提前致谢,来自 RoR 菜鸟。

4

2 回答 2

1

我猜那QuizResult是一个模型类。如果是这种情况,那么您不能将其用作查找实例的方法。

有多种方法可以通过某些条件查找对象,例如:

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

要检查 null(或 Ruby 中所指的 nil),您可以使用nil?Ruby 本身提供的方法或 Rails 便捷方法present?,除非对象为 nil、空字符串或空集合,否则该方法返回 true。

于 2012-08-29T20:49:41.130 回答
0

你可以检查你的报价。对于condiitions哈希,看起来您应该使用单引号而不是双引号。

于 2012-08-29T20:45:50.947 回答