#javascript #ruby-on-rails-3.1 #checkbox #formtastic #activeadmin
#javascript #ruby-on-rails-3.1 #флажок #formtastic #activeadmin
Вопрос:
Этот вопрос на самом деле состоит из двух вопросов.
- Кнопка выбрать все —
Active_admin
использует formtastic для отображения форм, поэтому я собираюсь спросить в контексте formtastic. Как бы я создал кнопку, которая устанавливает все флажки на странице? Я мог бы сделать это с помощью JavaScript, но я не уверен, как это сделать в formtastic. -
Установите коллекцию на основе выбранного значения. У меня есть выпадающее меню, которое позволяет пользователям выбирать из списка «Курсов». Студенты зачислены на курсы, поэтому я хочу иметь возможность отображать список студентов, зачисленных на курс, с флажками. Ie: Список студентов изменится, если пользователь выберет другой курс.
course.rb
has_and_belongs_to_many :студенты
student.rb
has_and_belongs_to_many:курсы
Ответ №1:
В 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
Лучшее, что вы можете сделать в active admin с formtastic, это:
В форме вашего курса
f.input :students, :as => :check_boxes, :collection => @students
Ответ №2:
Поскольку мне нужно автоматически добавлять кнопки Выбора всех / Выбора нет для ввода ВСЕХ групп флажков, я добавляю немного 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.
Надеюсь, это поможет.