Javascript 数据表不';t不适用于服务端处理

Javascript 数据表不';t不适用于服务端处理,javascript,jquery,ruby-on-rails,datatable,server-side,Javascript,Jquery,Ruby On Rails,Datatable,Server Side,我是datatable的新手,我想插入一个带有服务端处理和一些其他功能的datatable 为了在我的应用程序中插入我的datatable,我照做了,它成功了 这是我的app/assets/datatables/addresses\u datatable.rb文件: class AddressesDatatable delegate :params, :h, :link_to, :number_to_currency, to: :@view def initialize(view)

我是datatable的新手,我想插入一个带有服务端处理和一些其他功能的datatable

为了在我的应用程序中插入我的datatable,我照做了,它成功了

这是我的app/assets/datatables/addresses\u datatable.rb文件:

class AddressesDatatable
  delegate :params, :h, :link_to, :number_to_currency, to: :@view

  def initialize(view)
    @view = view
  end

  def as_json(options = {})
    {
      sEcho: params[:sEcho].to_i,
      iTotalRecords: addresses.count,
      iTotalDisplayRecords: addresses.total_entries,
      aaData: data
    }
  end

  private

  def data
    addresses.map do |address|
      [
        h(address.user_id),
        h(address.first_name),
      ]
    end
  end

  def addresses
    @addresses ||= fetch_addresses
  end

  def fetch_addresses
    addresses = Address.order("#{sort_column}").page(page).per_page(per_page)
    if params[:sSearch].present?
      addresses = addresses.where("user_id like first_name like :search", search: "%#{params[:sSearch]}%")
    end
    addresses
  end

  def page
    params[:iDisplayStart].to_i/per_page + 1
  end

  def per_page
    params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
  end

  def sort_column
    columns = %w[user_id first_name]
    columns[params[:iSortCol_0].to_i]
  end

end
这是我的app/views/addresses/index.html.erb文件:

<h1>User's addresses</h1>

<table id="addresses" class ="display" data-source= "<% user_addresses_path(format:"json")%>">
    <thead>
        <tr>
            <th>User id</th>
            <th>first anme</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>
这是我的地址_controller.rb:

class AddressesController < ApplicationController

  def index
    if signed_in?
      respond_to do |format|
        format.html
        format.json { render json: AddressesDatatable.new(view_context) }
      end
    end
  end
end
类地址控制器
当我尝试向datatable(如中)添加一些附加功能时,我的代码无法工作:

$(document).ready(function() {

    $('#addresses tbody tr').each( function() {
        var sTitle;
        var nTds = $('td', this);
        var sBrowser = $(nTds[0]).text();

     <a href="/ref#sTitle">sTitle</a> =  sBrowser+' this is the user s id';

        this.setAttribute( 'title', <a href="/ref#sTitle">sTitle</a> );
    } );

    var oTable = $('#addresses').dataTable({
        sPaginationType: "full_numbers",
        bSortClasses: false,
        bProcessing: true,
        bServerSide: true,
        sAjaxSource: $('#addresses').data('source')
    });

    oTable.$('tr').tooltip( {
        "delay": 0,
        "track": true,
        "fade": 250
    } );

} );
$(文档).ready(函数(){
$('#地址tbody tr')。每个(函数(){
变幅针迹;
var nTds=$('td',此);
var sBrowser=$(nTds[0]).text();
=sBrowser+'这是用户的id';
this.setAttribute('title',);
} );
var oTable=$(“#地址”).dataTable({
sPaginationType:“完整编号”,
bSortClasses:false,
b处理:对,
观察家方面:是的,
sAjaxSource:$(“#地址”).data('source')
});
可旋转。$('tr')。工具提示({
“延迟”:0,
“轨迹”:正确,
“褪色”:250
} );
} );
我尝试了许多不同的例子,每次我唯一能做的就是显示简单的数据表。这是因为我的数据表的服务器端行为吗

谢谢你的帮助


Clément

严肃地说……资产/数据表/地址\u datatable.rb…?不应该是app/datatables/addresses\u datatable.rb吗???我在rails上非常顺利地使用了服务器端数据表。再说一次,我不知道,我的知识有限。对不起,我会更正我的帖子:app/datatables/addresses\u datatable.rb
$(document).ready(function() {

    $('#addresses tbody tr').each( function() {
        var sTitle;
        var nTds = $('td', this);
        var sBrowser = $(nTds[0]).text();

     <a href="/ref#sTitle">sTitle</a> =  sBrowser+' this is the user s id';

        this.setAttribute( 'title', <a href="/ref#sTitle">sTitle</a> );
    } );

    var oTable = $('#addresses').dataTable({
        sPaginationType: "full_numbers",
        bSortClasses: false,
        bProcessing: true,
        bServerSide: true,
        sAjaxSource: $('#addresses').data('source')
    });

    oTable.$('tr').tooltip( {
        "delay": 0,
        "track": true,
        "fade": 250
    } );

} );