2016-02-23 130 views
0

我有scaffold student name:string is_active:booleanscaffold attendance student_id:integer event_id:integerRuby on Rails的關聯內部過濾

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

你會想要從你的意見中分離出你的邏輯。因此,在使用你上面的表格可以定義要在您的下降看到下拉菜單什麼的控制器方法:

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) 
+0

我試圖第二個。它有效,但是當我去考勤/編輯時,如果學生字段不再有效,它顯示爲空白。這能解決嗎? –

+0

那麼,如果您的數據庫中只有一名學生,而他/她沒有激活,那麼下拉菜單中將不會顯示任何內容。你想要發生什麼? –

+0

如果例如我想編輯'= f.association:event',並且學生不再活躍,它將顯示一個空白'= f.association:student' ... –