【发布时间】:2012-08-30 13:17:43
【问题描述】:
我有 Ruby on Rails 2.3.x。我有一个学习管理系统的数据库。
为用户分配一个用户 ID,然后进行测验。如果用户进行任意数量的测验,我希望显示平均分数。分数在quiz_results 表中列为0 和1 之间的浮点数,因此* 100 和.round 也有user_id 行。但如果用户没有参加任何测验,我希望出现"No quizzes taken"。
代码如下:
-if QuizResult.find_by_user_id(@user_id).present?
="#{(QuizResult.average('score', :conditions => 'user_id = #{@user.id}') * 100).round}%"
-else
%em No quizzes taken
问题是无论如何,即使有quiz_results 条目,"No quizzes taken" 仍然会出现。
我做错了什么?
【问题讨论】:
-
尝试替换为
if QuizResult.find_by_user_id(@user_id) -
感谢您的建议。不幸的是,没有变化。
-
试试
if QuizResult.find_by_user_id(@user_id).any? -
给我一个错误:“ActionView::TemplateError (undefined method `any?' for nil:NilClass)”:(
-
好的,但是如果
QuizResult.find_by_user_id(@user_id)是nil,那么条件if QuizResult.find_by_user_id(@user_id)应该可以工作...(false和nil在 Ruby 中都是false条件)
标签: ruby-on-rails ruby haml