0

我目前正在执行一个项目,我正在实施几个报告。报告过滤器远程提交给我的操作,返回结果显示在 Datatable 中,并带有搜索、排序和分页。

我有一个 drg.js.erb 文件,其中包含如下代码:

var html = "<%= escape_javascript(render(partial: 'drg_datatable',formats: [:html],locals: {result: @result})) %>";
$("#datatable-result").append(html);

部分 _drg_datatable.html.erb 的数据表是这样实现的。下面是我的 _drg_datatable.html.erb 文件:

<% if result %>
  <table id="results" class="table table-striped table-bordered display">
  <% case params[:view] %>
    <% when "ahfs" %>
      <%= datatable_ahfs_result(result) %>
    <% when "drg_code"  %>
      <%= datatable_drg_result(result) %>
    <% when "inpharmics_id"  %>
      <%= datatable_inpharmics_id_result(result) %>
    <% when "provider"  %>
        <%= datatable_provider_result(result) %>
    <% else %>

   <%  end %>
  </table>  
<% end %>

我面临的问题是,当我使用 .js.erb 文件渲染部分 _drg_datatable.html.erb 时,它会创建表,但会转义 javascript 以添加排序、分页和我们在 Jquery Datatables 中获得的其他很酷的功能。有人可以指出我该怎么做吗?我试图在不编写 escape_javascript 的情况下渲染部分是 .js.erb ,但是部分根本没有被渲染。

4

2 回答 2

1

您必须在 drg.js.erb 中显式调用 datatable js 函数才能“数据表化”您的表。前任:

var html = "<%= escape_javascript(render(partial: 'drg_datatable',formats: [:html],locals: {result: @result})) %>";
$("#datatable-result").append(html);
$('#results').dataTable();

我想你有类似的东西:

$(document).ready(function(){
  $('a selector of yours').dataTable();
});

在你的应用程序的 javascripts 中的某个地方。这在文档加载后运行一次,并应用于您的 dom 中存在的元素。由于现在您要添加一个新表,因此您必须“重新分配”数据表行为......

于 2013-05-03T09:29:33.013 回答
1

@grotori:您的解决方案给了我修复它的提示。我用一个在任何地方都没有使用过的名称重命名了我的数据表 ID。我在部分中删除了数据表的初始实现,并修改了代码以首先呈现部分,然后将数据表应用于它。这是我所做的:

var html = "<%= escape_javascript(render(partial: 'drg_datatable',formats: [:html],locals: {result: @result})) %>";
$("#datatable-result").html(html);

jQuery(function() {
    $("#drg-results").dataTable({
        "sDom": "<'row-fluid'<'span4'l><'span7 pull-right'f>r>t<'row-fluid'<'span4'i><'span7 pull-right'p>>",
        "sPaginationType": "bootstrap",
        "sScrollX": "100%",
        "bDestroy": true,
        "bProcessing": true,
        "bScrollCollapse": true
     });
});

希望这有助于其他尝试实现相同目标的人。

于 2013-05-09T17:10:06.200 回答