应用rails分页时DataTable出错

时间:2015-01-24 06:19:26

标签: jquery ruby-on-rails ajax datatable pagination

我在Rails应用程序中使用DataTable。

DataTable Partial


<% if @messages.present? and @messages.length > 0 %>
  <h4><%= t('labels.message')%></h4>
  <table id="messages_table" class="table table-striped table-bordered display">
    <thead>
      <tr>
        <th ></th>
        <th class="hide"></th>
        <th class="hide"></th>
        <th><strong><%= t('labels.date')%> </strong></th>
        <th><strong><%= t('labels.sender')%> </strong></th>
        <th><strong><%= t('labels.subject')%> </strong></th>
        <th><strong><%= t('labels.action')%></strong></th>
       </tr>
      </thead>
   <tbody>
    <% @messages.each do |message| %>
      <tr>
        <td class="center" style="min-width:20px;"><img src="/assets/details_open.png" rel="<%= message.id %>"></td>
        <td class="hide"><%= message.body.html_safe %></td>
        <td style="display:none"><%= message.created_at.to_i %></td>
        <td><%= parse_datetime(message.created_at.to_s, :dtconcise) %>           </td>
        <td><%= message.sender %></td>
        <td><%= message.subject %></td>
        <td>
          <%= link_to("Delete", delete_message_path(message) ,:class => "table2",
              :confirm => t('confirmation.delete_message')) %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>
     -------------------------------------------------- -----------------   On当我点击此表的任何'tr'的第一个'td'上的图像时首次加载(每个第一个'td'都有一个图像),然后第二个'td'数据将显示在下面一个单独的行中这个'tr',默认第二个'td'将隐藏意味着第二个'td'数据将隐藏/显示在'td'图像点击上。  主要问题在于,当我使用ajax进行分页然后将表格部分渲染然后隐藏/显示数据时,点击任何'tr'的第一个'td'都不起作用。为此我再次重新初始化dataTable。   我编写了像分页后的代码,以便在'get_message.js.erb'文件中的特定DIV上呈现结果。   
$('#message_list').html('<tr><td colspan="5"><h5 style="text-align:   center; margin-top: 100px;"><%= t('messages.no_result_found') %></h5></td></tr>');

$('#paginator_message').html('');
  
$('#message_list').html('<%= escape_javascript render(:partial =>"messages_list", :format => [:html]) %>');

$('#paginator_message').html('<%= escape_javascript(paginate(@messages, :params => {:controller => 'dashboard', :action => 'get_messages'}, :remote => true).to_s) %>');
  
oTable = $('#message_list').find("#messages_table").dataTable({
  aoColumnDefs: [
    {
      bSortable: false,
      aTargets: [0, 6]
    }
  ],
  aaSorting: [[3, "desc"]],
  "aoColumns": [
    {
      "iDataSort": null
    }, {
      "iDataSort": null
    }, {
      "iDataSort": 2
    }, {
      "iDataSort": 2
    }, {
      "iDataSort": 4
    }, {
      "iDataSort": 5
    }, {
      "iDataSort": null
    }
  ],
  "bPaginate": false,
  "bInfo": false,
  "bFilter": false,
  "bRetrieve" : true,
  "bProcessing" : true
});

oTable.fnDraw();
messageLoad(oTable);

在我们点击DataTable的第一个td后,它会给出错误,如: “未捕获的TypeError:无法读取属性'aoData'的null”

0 个答案:

没有答案