在关联内部的rails上过滤ruby

时间:2016-02-23 10:24:20

标签: ruby ruby-on-rails-4

我有scaffold student name:string is_active:booleanscaffold attendance student_id:integer event_id:integer

Student has_many :attendances

Attendance belongs_to :student

出勤/ _form.html.haml:

= simple_form_for(@attendance) do |f|
  = f.error_notification

  .form-inputs
    = f.association :student
    = f.association :event

  .form-actions
    = f.button :submit

如何编辑关联下拉菜单,以查看只有is_active : true的学生?

1 个答案:

答案 0 :(得分:1)

您需要将逻辑与观点分开。因此,在使用上述表单的控制器方法中,您可以在下拉菜单中定义要查看的内容:

def controller_method
  @active_students = Student.where(is_active: true)
end

在表单中的关联中,您可以指定下拉菜单collection等于@active_students

f.association :student, collection: @active_students

或者,在一行中:

f.association :student, collection: Student.where(is_active: true)