代码之家  ›  专栏  ›  技术社区  ›  vinibol12

选中/取消选中all with collection\u复选框

  •  0
  • vinibol12  · 技术社区  · 9 年前

    simple_form_for 只向表单传递符号而不是模型,这样我就可以将自定义参数发送回控制器。 我设法将复选框默认为默认选中的所有复选框。

    当我在浏览器控制台中选中/取消选中任何项目但没有属性时,如果任何属性发生更改,我会在浏览器控制台中进行检查 input 元素更改。这个 <form>

    = simple_form_for :mass_unassignment, url: admin_merchant_holiday_path(@merchant), method: :post do |f|
        - if @jobs.present?
          %h3 Cleaning
          %table
            %thead
              %tr
                %td= check_box_tag :mass_select
                %td Id
                %td Date
                %td Customer
            %tbody
              = f.collection_check_boxes :jobs, @jobs, :id, :start_at, checked: @jobs.map(&:id) do |el|
                - job = el.object
                %tr
                  %td= el.check_box checked_value: 1
                  %td= link_to el.object.id, admin_job_path(job)
                  %td= job.start_at.strftime('%e %b %y – %I:%M%P')
                  %td= link_to job.customer.full_name, admin_customers_path(job.customer)
    

    HTLM generated

    Browser view

    1 回复  |  直到 9 年前
        1
  •  1
  •   HighHopes    9 年前

    这似乎更像是一个Javascript问题,而不是RoR问题。 从@jdgray评论中给出的链接中,您可以使用以下内容:

    function toggle(source) {
      checkboxes = document.getElementsByName('foo');
      for(var i=0, n=checkboxes.length;i<n;i++) {
        checkboxes[i].checked = source.checked;
      }
    }
    

    $('#all-check').change(function(){
        if ($(this).prop('checked')){
            $('form :checked').each(function(){
                $(this).prop('checked', true);
            });
        }else{
            $('form :checked').each(function(){
                $(this).prop('checked', false);
            });
        }
    });