Javascript Rails 3.1-活动的\u管理和复选框
这个问题实际上是两个问题Javascript Rails 3.1-活动的\u管理和复选框,javascript,ruby-on-rails-3.1,checkbox,formtastic,activeadmin,Javascript,Ruby On Rails 3.1,Checkbox,Formtastic,Activeadmin,这个问题实际上是两个问题 全选按钮-Active\u admin使用formtastic呈现表单,因此我将在formtastic的上下文中询问。如何创建一个按钮来选择页面上的所有复选框?我可以用JavaScript来做,但我不确定如何用formtastic来做 根据选择值设置集合。我有一个下拉菜单,让人们从“课程”列表中选择。学生已注册课程,因此我希望能够显示注册课程的学生的复选框列表。Ie:如果用户选择不同的课程,学生列表将发生变化 course.rb 你和你属于很多学生吗 student.r
Active\u admin
使用formtastic呈现表单,因此我将在formtastic的上下文中询问。如何创建一个按钮来选择页面上的所有复选框?我可以用JavaScript来做,但我不确定如何用formtastic来做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在active admin中所能做的最好的事情是:
以你的课程形式
f.input :students, :as => :check_boxes, :collection => @students
因为我需要自动向所有复选框组输入添加全选/全选按钮,所以我向active_admin.js(从active_admin.js.coffee重命名,因为它不使用CoffeeScript)添加了一些javascript
/=需要活动的\u admin/base
$(文档).ready(函数(){
var$select_btns=$('select all取消选择all );
$('.inputs.check_box')。每个(函数(i,el){
$(el).find('.choices组').prepend($select_btns.clone());
});
$(“.inputs”)
.on('单击',')。选择“全部”,函数(){
var$复选框=$(this).parents('.choices group').find('input');
$复选框。每个(函数(){
this.checked=true;
});
返回false;
})
。在('单击','上。选择“无”,函数(){
var$复选框=$(this).parents('.choices group').find('input');
$复选框。每个(函数(){
此项检查=错误;
});
返回false;
});
});
在Rails 4.0.4上使用ActiveAdmin 1.0.0。
希望这有帮助
//= 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;
});
});