【问题标题】:Rails 3.1 - Active_admin and CheckboxesRails 3.1 - Active_admin 和复选框
【发布时间】:2011-10-07 13:24:40
【问题描述】:

这个问题真的是两个问题。

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

    课程.rb

    has_and_belongs_to_many :students

    student.rb

    has_and_belongs_to_many :课程

【问题讨论】:

    标签: javascript ruby-on-rails-3.1 checkbox formtastic activeadmin


    【解决方案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
    

    使用 formtastic 在活动管理员中可以做的最好的事情是:

    在您的课程表中

    f.input :students, :as => :check_boxes, :collection => @students   
    

    【讨论】:

      【解决方案2】:

      由于我需要自动将全选/全选按钮添加到所有复选框组输入,因此我向 active_admin.js 添加了一些 javascript(从 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;
              });
      });
      

      在 Rails 4.0.4 上使用 ActiveAdmin 1.0.0。 希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-18
        • 1970-01-01
        相关资源
        最近更新 更多