0

我正在使用 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_idscore等列。我有一个user_id(3907)和result(0.1)的记录,我正在查看的两个用户在quiz_results表中没有记录。

显示器显示"No quizzes taken"了所有三个,这让我相信这条线无论如何都是错误的:

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

任何想法如何解决?

4

3 回答 3

1

我想您需要更改@user.iduser.id.

于 2012-08-31T03:35:49.360 回答
1

将语句中的 和更改@user_id为。还将单引号更改为双引号或使用字符串插值将不起作用。user.idif@user.iduser.id

于 2012-08-31T03:38:44.483 回答
0

作为问题第二部分的答案,我认为您不能拥有嵌套的评估字符串(嵌套#{})。您需要先计算结果,然后在 HAML 中评估并输出:

-averge = QuizResult.average('score', :conditions => 'user_id = #{@user.id}') * 100).round
="#{average}%"
于 2012-08-31T03:43:47.730 回答