【问题标题】:Ruby on Rails Condition BrokenRuby on Rails 条件损坏
【发布时间】: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) 应该可以工作...(falsenil 在 Ruby 中都是 false 条件)

标签: ruby-on-rails ruby haml


【解决方案1】:

您正在测试是否:

QuizResult.find_by_user_id(@user_id)

存在,但我怀疑你的意思是:

QuizResult.find_by_user_id(@user.id)

【讨论】:

  • 谢谢。行为没有变化。仍然只显示“未进行测验”。
猜你喜欢
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多