Rails 3.1 - Active_admin和Checkboxes

问题描述 投票:4回答:2

这个问题实际上是两个问题。

  1. 选择所有按钮 Active_admin使用Active_admin来渲染表单,所以我将在Active_admin的上下文中询问。 如何创建一个选择页面上所有复选框的按钮? 我可以使用JavaScript来做到这一点,但我不确定如何在formtastic中做到这一点。
  2. 根据选择值设置集合 。 我有一个下拉菜单,让人们从“课程”列表中选择。 学生已注册课程,因此我希望能够显示在课程中注册的学生的复选框列表。 即:如果用户选择不同的课程,则学生列表将改变。

    course.rb

    has_and_belongs_to_many:学生

    student.rb

    has_and_belongs_to_many:课程

javascript ruby-on-rails-3.1 checkbox formtastic activeadmin
2个回答
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
投票

由于我需要自动将Select All / Select None按钮添加到ALL复选框组输入,我向active_admin.js添加了一些javascript(由于它不使用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。 希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.