Rails在.all方法中出错

时间:2015-05-03 08:44:55

标签: ruby-on-rails ruby ruby-on-rails-4

嗨从rails 4.0.0更新到4.1.0后出现此错误:

wrong number of arguments (1 for 0)

在视图代码中:

<%= user_progress membership.progress %>

它来自membership.rb

Lesson.all(:conditions => {:course_object_id => self.course_id}, :order => "lessons.sort ASC, lessons.start_date").each do | lesson |
  all_lessons[lesson.id.to_s] = lesson
  all_lesson_ids << lesson.id.to_s
end

这个剪了什么错?

2 个答案:

答案 0 :(得分:3)

您应该改变构建查询的方式:

Lesson.all(:conditions => {:course_object_id => self.course_id}, :order => "lessons.sort ASC, lessons.start_date")

Lesson.where(:course_object_id => self.course_id).order("lessons.sort ASC, lessons.start_date")

所以它看起来像这样:

Lesson.where(:course_object_id => self.course_id).order("lessons.sort ASC, lessons.start_date").each do | lesson |
  all_lessons[lesson.id.to_s] = lesson
  all_lesson_ids << lesson.id.to_s
end
祝你好运!

答案 1 :(得分:1)

正如您在文档all中所读到的那样,方法不接受任何参数。在您的情况下,您可以使用where方法。