Javascript 数据表不';t不适用于服务端处理
我是datatable的新手,我想插入一个带有服务端处理和一些其他功能的datatable 为了在我的应用程序中插入我的datatable,我照做了,它成功了 这是我的app/assets/datatables/addresses\u datatable.rb文件: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)
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
} );
} );