Ruby on rails 在.js.erb文件中具有Jquery数据表的呈现模板

Ruby on rails 在.js.erb文件中具有Jquery数据表的呈现模板,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,datatables,erb,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Datatables,Erb,我目前正在执行一个项目,其中我正在执行几个报告。报告过滤器将远程提交到my action,返回结果显示在Datatable中,并进行搜索、排序和分页 我有一个drg.js.erb文件,其代码如下: var html = "<%= escape_javascript(render(partial: 'drg_datatable',formats: [:html],locals: {result: @result})) %>"; $("#datatable-result").append

我目前正在执行一个项目,其中我正在执行几个报告。报告过滤器将远程提交到my action,返回结果显示在Datatable中,并进行搜索、排序和分页

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

var html = "<%= escape_javascript(render(partial: 'drg_datatable',formats: [:html],locals: {result: @result})) %>";
$("#datatable-result").append(html);
var html=”“;
$(“#数据表结果”).append(html);
部分_drg_datatable.html.erb的datatable是这样实现的。下面是my_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的情况下呈现部分is.js.erb,但该部分根本无法呈现。

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

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

在应用程序的Java脚本中的某个地方。这将在文档加载后运行一次,并应用于dom中存在的元素。因为现在您要添加一个新表,所以必须“重新分配”datatable行为…

@grotori:您的解决方案给了我一个修复它的提示。我用一个应用程序中没有使用的名称重命名了我的datatable id。我在partial中删除了datatable的初始实现,并修改了代码以首先呈现partial,然后将datatable应用于它。以下是我所做的:

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
     });
});
var html=”“;
$(“#数据表结果”).html(html);
jQuery(函数(){
$(“#drg结果”).dataTable({
“sDom”:“t”,
“sPaginationType”:“引导程序”,
“sScrollX”:“100%”,
是的,
“bProcessing”:正确,
“崩溃”:真
});
});
希望这有助于其他人实现同样的目标

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
     });
});