使用grouped_collection_select和simpleform时,___的未定义方法'map'

时间:2014-04-03 12:10:05

标签: ruby-on-rails ruby simple-form

我正在开设一个夏令营注册应用程序。每天有五个课程,每个课程都有许多课程,露营者可以根据他们的成绩选择。

尝试跟随Dynamic Select Menus上的轨道广播剧集,当露营者选择他们的成绩时,我希望每个会话可用的课程选择按成绩进行过滤。 (即,他们选择二年级..除了二年级的课程选项都被过滤掉了。)

我的第一步是让groups_collection_select工作。但是,当我加载页面时,我收到以下错误。

undefined method `map' for #<Grade:0x007f93810f6600>

如果有人有任何想法,我会很感激!

grade.rb

class Grade < ActiveRecord::Base
  attr_accessible :name

  has_many :classes
end

class.rb

class Class < ActiveRecord::Base
  attr_accessible :fall_grade_id, :session_ids

  validates_presence_of :fall_grade_id, :session_ids

  belongs_to :grade

  has_many :session_class_relationships
  has_many :sessions, :through => :session_class_relationships
end

registration.rb

class Registration < AcriveRecord::Base
    attr_accessible :fall_grade_id, :session_1_class_id

end

注册/ new.html.haml

...

= simple_form_for(@registration, :html => {:class => 'form-horizontal' }) do |f|
    = f.input :fall_grade_id, :collection => 1..6, :prompt => 'Select..', :label => 'Grade'
    = f.input :session_1_class_id, collection: @session_1_classes, as: :grouped_select, group_method: :grade

...

1 个答案:

答案 0 :(得分:0)

您的@session_1_classes变量似乎是Grade个实例,而不是Class关系。你可能需要这样做:

@session_1_classes = (code_to_find_grade_instance).classes

在您的控制器中。