我在Rails 2.3.x中使用学习管理系统。这是我的代码:
-@users.each do |user|
%tr
%td
=link_to h(user.name), :action => :show_user, :id => user.id
%td="#{h user.grade_level}"
-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
表包含user_id
和score
等列。我有一个user_id
(3907)和result
(0.1)的记录,以及我正在查看的两个用户quiz_results
表中没有记录。
所有三个显示都显示"No quizzes taken"
,这让我相信无论如何这条线都是假的:
-if QuizResult.find_by_user_id(@user_id).present?
任何想法如何解决?
答案 0 :(得分:1)
我猜您需要将@user.id
更改为user.id
。
答案 1 :(得分:1)
将@user_id
语句中的user.id
更改为if
,将@user.id
更改为user.id
。同时将单引号更改为双引号或使用字符串插值也不起作用。
答案 2 :(得分:0)
作为问题第二部分的答案,我认为您不能拥有嵌套的评估字符串(嵌套#{}
)。您需要先计算结果,然后在HAML中评估并输出结果:
-averge = QuizResult.average('score', :conditions => 'user_id = #{@user.id}') * 100).round
="#{average}%"