Rails 3.1 — Active_admin и флажки

Этот вопрос на самом деле два вопроса.

  1. Кнопка «Выбрать все»Active_admin использует formtastic для отображения форм, поэтому я спрошу в контексте formtastic. Как мне создать кнопку, которая выбирает все флажки на странице? Я мог бы сделать это с помощью JavaScript, но я не уверен, как это сделать в formtastic.
  2. Настроить коллекцию на основе выбранного значения. У меня есть раскрывающееся меню, которое позволяет людям выбирать из списка «Курсы». Студенты зачислены на курсы, поэтому я хочу иметь возможность отображать список флажков студентов, зачисленных на курс. То есть: список студентов изменится, если пользователь выберет другой курс.

    курс.рб

    has_and_belongs_to_many :студенты

    студент.рб

    has_and_belongs_to_many :курсы


person Ammar    schedule 07.10.2011    source источник


Ответы (2)


У 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   
person vhtellez    schedule 20.01.2012

Поскольку мне нужно автоматически добавлять кнопки «Выбрать все»/«Выбрать ничего» для ввода группы флажков «ВСЕ», я добавляю немного javascript в файл active_admin.js (переименованный из active_admin.js.coffee, поскольку он не использует CoffeeScript).

//= 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;
        });
});

Работа над ActiveAdmin 1.0.0 на Rails 4.0.4. Надеюсь это поможет.

person micred    schedule 07.07.2014