Rails 3.1 - Active_admin и флажки - PullRequest
       26

Rails 3.1 - Active_admin и флажки

4 голосов
/ 07 октября 2011

Этот вопрос действительно два вопроса.

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

    course.rb

    has_and_belongs_to_many: студенты

    student.rb

    has_and_belongs_to_many: курсы

Ответы [ 2 ]

10 голосов
/ 20 января 2012

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 голосов
/ 07 июля 2014

Поскольку мне нужно автоматически добавить кнопки «Выбрать все / Выбрать нет» для ввода группы флажков «ВСЕ», я добавляю немного 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. Надеюсь, это поможет.

...