2014-09-30 2 views
1

Ruby 2.0.0, Rails 4.0.3, jquery-datatables-rails 2.2.3 (w/DataTables 1.10.1), jquery-rails 3.1.1, jquery-rails 3.1.1, ui-rails 5.0.0, lodash-rails 2.4.1, bootstrap-sass 3.2.0.1Datatable rows простираются за пределы таблицы или слишком узки

У меня возникли проблемы с правильной форматировкой Datatables. Либо столбцы переполняют форму, либо столбцы слишком узкие. Я попробовал мириад исправлений для этого. Я установил columnDefs и ширину столбца. Я установил ширину HTML в заголовках таблиц. Я установил autoWidth false и true. Я установил ширину CSS динамически. Я установил различные рекомендуемые модификации CSS. Я пробовал все, что мог найти. Отвратительная часть заключается в том, что ничего не меняется. Формат всегда точно такой же, как будто он полностью игнорирует все мои попытки. Эти формы настроены на отзывчивость. Я также отключил это. Нет кубиков.

Помимо форматирования, таблицы отлично работают. Они сортируются. Они ищут, Они страницы. Они просто не будут правильно отформатировать. Опять же, я сводил к минимуму это до одной формы и без всякой информации извлекал всю постороннюю информацию.

Вся помощь приветствуется.

форма оказывает как: enter image description here

Парциальное форма:

<div class="span12"> 
    <p> 
    <table id="carstable" class="display table-striped" width="80%" 
     data-source="<%= cars_path(format: "json") %>"> 
    <thead> 
    <tr> 
     <th data-class="expand">Stock No.</th> 
     <th>Year</th> 
     <th>Make</th> 
     <th data-hide="phone">Model</th> 
     <th data-hide="phone">Color</th> 
     <th>Status</th> 
     <th data-hide="phone,tablet">Mileage</th> 
     <th data-hide="phone,tablet">MSRP</th> 
     <th data-hide="phone,tablet">Aged</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
    </table> 
</div> 

Объект DataTable инициализируется как:

$(document).ready(function() { 
    var breakpointDefinition, tableElement; 
    var rHelperCar; 
    rHelperCar = void 0; 
    breakpointDefinition = { 
     tablet: 1300, 
     phone: 480 
    }; 
    tableElement = $("#carstable"); 
    tableElement.dataTable({ 
     responsive: false, 
     autoWidth: false, 
     pagingType: "full", 
     jQueryUI: true, 
     processing: true, 
     serverSide: true, 
     ajax: $('#carstable').data('source'), 
     preDrawCallback: function() { 
      if (!rHelperCar) { 
       rHelperCar = new ResponsiveDatatablesHelper(tableElement, breakpointDefinition); 
      } 
     }, 
     rowCallback: function (nRow) { 
      rHelperCar.createExpandIcon(nRow); 
     }, 
     drawCallback: function (oSettings) { 
      rHelperCar.respond(); 
     } 
    }); 

Сохраненные HTML Страница:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <link href="/images/favicon.ico" rel="icon" /> 
    <title>Car</title> 
    <meta name="description" content="Car"> 

    <link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet" /> 
... 
<script data-turbolinks-track="true" src="/assets/application.js?body=1"></script> 
</head> 
<body> 
<header> 
    <div class="navbar navbar-inverse navbar-fixed-top"> 
    <a class="navbar-brand" href="/"><h4>Car</h4></a> 
    <div class="container"> 
    <div class="navbar-header"> 
     <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
     <span class="sr-only">Toggle navigation</span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="/">Home</a> 
    </div> 
    <div class="collapse navbar-collapse"> 
     <ul class="nav navbar-nav"> 
      <li><a href="/logout">Logout</a></li> 
    <li><a href="/cars">Cars</a></li> 

     </ul> 
    </div> 
    </div> 
</div> 

</header> 
<main role="main"> 

    <div class="container-fluid"> 
    <div class="row"> 
     <div class="row"> 
    <div class="col-md-6"> 
    <div class="panel panel-primary"> 
    <div class="panel-heading"> 
     --- This associate is: David Hanson 
    </div> 
    <div class="panel-body"> 
     <div class="span12"> 
    <p> 
    <table id="carstable" class="display table-striped" width="80%" 
     data-source="/cars.json"> 
    <thead> 
    <tr> 
     <th data-class="expand">Stock No.</th> 
     <th>Year</th> 
     <th>Make</th> 
     <th data-hide="phone">Model</th> 
     <th data-hide="phone">Color</th> 
     <th>Status</th> 
     <th data-hide="phone,tablet">Mileage</th> 
     <th data-hide="phone,tablet">MSRP</th> 
     <th data-hide="phone,tablet">Aged</th> 
    </tr> 
    </thead> 
    <tbody> 
    </tbody> 
    </table> 
</div> 

    </div> 
    </div> 
</div> 

</div> 
    </div> 
    </div> 
</main> 
</body> 
</html> 

ответ

1

Это было не сложно, если я действительно понял проблему с помощью автора DataTables, Аллан. Строки были просто шире, чем могла обрабатывать таблица, заставляя ее переполняться. Я обнаружил, что index.html.erb показывал частичный индекс с макетом, содержащим элемент div, который ограничивал ширину таблицы до col-md-6. Я изменил ширину на col-md-9 и решил основную проблему.

Ширина строки продолжает оставаться проблематичной по мере сокращения ширины браузера и изменения типов устройств. Кажется, это проблема с breakpointDefinition. Кажется, что тонкая настройка этого параметра должна решить проблему, чтобы столбцы были скрыты соответствующим образом.

Обновление: Также было замечено, что частичное, которое я показывал, имел span12, который влиял на длину строки. Разумеется, было бы целесообразно, чтобы размер таблицы и длина строки были совместимы. Забавно, как просто все это работает, когда вы рисуете часть этого. Конечно, мне гораздо больше нужно учиться.

Смежные вопросы