0

私はRails2.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ありますscoreuser_id(3907)とresult(0.1)のレコードがあり、テーブルにレコードがない2人のユーザーが表示されていますquiz_results

ディスプレイには"No quizzes taken"3つすべてが表示されます。これにより、この行は何があっても誤りであると私は信じます。

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

修正する方法はありますか?

4

3 に答える 3

1

@user.idに変更する必要があると思いますuser.id

于 2012-08-31T03:35:49.360 に答える
1

ステートメント内のとをに変更@user_idします。また、一重引用符を二重引用符に変更しないと、文字列補間を使用できません。user.idif@user.iduser.id

于 2012-08-31T03:38:44.483 に答える
0

あなたの質問の2番目の部分への答えとして、私はあなたがネストされた評価された文字列(ネストされた#{})を持つことはできないと思います。最初に結果を計算してから、評価してHAMLに出力する必要があります。

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