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 を記述せずにパーシャル is .js.erb をレンダリングしようとしましたが、パーシャルはまったくレンダリングされません。

4

2 に答える 2

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 に答える
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();
});

アプリケーションの JavaScript のどこかに。これは、ドキュメントのロード後に一度実行され、dom に存在する要素に適用されます。新しいテーブルを追加しているので、データテーブルの動作を「再割り当て」する必要があります...

于 2013-05-03T09:29:33.013 に答える