4

這個問題真的是兩個問題。Rails 3.1 - Active_admin和複選框

  1. 選擇所有按鈕 - Active_admin使用formtastic呈現形式,所以我要問的formtastic上下文。我將如何創建一個按鈕來選擇頁面上的所有複選框?我可以用JavaScript來做,但我不確定如何在formtastic中做到這一點。
  2. 根據選定值設置集合。我有一個下拉菜單讓人們從「課程」列表中進行選擇。學生註冊課程,所以我希望能夠顯示註冊課程的學生的複選框列表。即:如果用戶選擇不同的課程,學生名單將會改變。

    course.rb

    has_and_belongs_to_many:學生

    student.rb

    has_and_belongs_to_many:課程

回答

10

Formtastic沒有一個簡單的解決方案的 「全選」 複選框,如果你使用的是JQUERY,你可以這樣做:

在你student.rb模型添加

attr_accessor :select_all_courses 

f.inputs "Courses" do 
    f.input :select_all_courses, :as => :boolean, :label => 'SELECT ALL', :input_html => {:onclick => "jQuery.each($('.student_courses_checkboxes'), function() { this.checked = $('.all_selector')[0].checked });", :class => "all_selector"} 
    f.input :courses, :as => :check_boxes, :collection => @courses, :input_html => {:class => 'student_courses_checkboxes'}  
end 

你可以在主動管理與formtastic做的最好的是:

在你的課程形式

f.input :students, :as => :check_boxes, :collection => @students 
0

因爲我需要自動添加全選/選擇無按鈕到所有複選框組輸入,我添加了一點javascript到active_admin.js(由於它不使用CoffeeScript,因此從active_admin.js.coffee重命名)。

//= require active_admin/base 

$(document).ready(function() { 
    var $select_btns = $('<li class="choice"><div class="select-btn-container"><button class="select_all">Select all</button><button class="select_none">Deselect all</button></div></li>'); 
    $('.inputs .check_boxes').each(function (i, el) { 
     $(el).find('.choices-group').prepend($select_btns.clone()); 
    }); 

    $('.inputs') 
     .on('click', '.select_all', function() { 
      var $check_boxes = $(this).parents('.choices-group').find('input'); 
      $check_boxes.each(function() { 
       this.checked = true; 
      }); 
      return false; 
     }) 
     .on('click', '.select_none', function() { 
      var $check_boxes = $(this).parents('.choices-group').find('input'); 
      $check_boxes.each(function() { 
       this.checked = false; 
      }); 
      return false; 
     }); 
}); 

在Rails 4.0.4上使用ActiveAdmin 1.0.0。 希望這有助於。