Ich habe die Railscast 340 Tutorial folgen, aber ich konnte nicht die Daten über js rendern. Der Tisch ist leer für mich und die Daten zeigen mir nicht, was könnte schief gehen?Ruby on Rails mit Daten Tabelle basierend auf Rails Cast # 340
das ist mein clientesdatatable.rb
class ClientesDatatable
delegate :params, :h, :link_to, :number_to_currency, to: :@views
def initialize(view)
@view = view
end
def as_json(options = {})
{
sEcho: params[:sEcho].to_i,
iTotalRecords: Cliente.count,
iTotalDisplayRecords: Clientes.total_entries,
aaData: data
}
end
def data
clientes.map do |cliente|
[
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli),
h(cliente.IdCli)
]
end
end
def clientes
@clientes ||= fetch_clientes
end
def fetch_clientes
clientes = Cliente.order("#{sort_column} #{sort_direction}")
clientes = clientes.page(page).per_page(per_page)
if params[:sSearch].present?
clientes = clientes.where("IdCli like :search", search: "%#{params[:sSearch]}%"))
end
clientes
end
def page
[: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[IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli IdCli]
# columns[params[:iSortCol_0].to_i] <-- used in video
columns[params[:order]["0"]["column"].to_i] #<-- works in Rails 4
end
def sort_direction
params[:order]["0"]["dir"] #<-- works in Rails 4
# params[:sSortDir_0] == "desc" ? "desc" : "asc" <-- used in video
end
end
mein clienteController
def index
respond_to do |format|
format.html
format.json { render json: ClientesDatatable.new(view_context)}
end
mein client.coffe
jQuery ->
$('#clientes').DataTable
"Processing": true
"ServerSide": true
"Ajax": {
url: $('#clientes').data('source'),
type: "get"
}
und meine Tabelle:
<table id="clientes" class="display" data-source="<%=clientes_url(format: "json")%>"><!--el id clientes es de datatables referenciado en clientes.coffe y display class es una clase de datatables-->
<thead>
<tr><!--active es para sombrear la fila-->
<th>Clave</th>
<th>Nombre</th>
<th>Nombre Corto</th>
<th>Dirección</th>
<th>Colonia</th>
<th>Credito</th>
<th>DiasCredito</th>
<th>LimiteCredito</th>
<th>Saldo</th>
<th>Ruta</th>
<th>Promociones</th>
<th>Acción</th>
<th></th>
</tr>
</thead>
<tbody id="container_clientes">
</tbody>
</table>
in localhost: 3000/cliente.json ich diesen Fehler:
Module :: DelegationError in ClientesController # Index
ClientesDatatable#params delegated to @views.params, but @views is nil: #<ClientesDatatable:0x84da9678 @view=#<#<Class:0x84dc0b20>:0x84db4528 @_routes=nil, @_config={}, @view_renderer=#<ActionView::Renderer:0x84db45dc @lookup_context=#<ActionView::LookupContext:0x84f4b4f4 @details_key=nil, @details={:locale=>[:en], :formats=>[:json], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder, :haml]}, @skip_default_locale=false, @cache=true, @prefixes=["clientes", "application"], @rendered_format=:json, @view_paths=#<ActionView::PathSet:0x84f4b490 @paths=[#<ActionView::OptimizedFileSystemResolver:0x85542bb4 @pattern=":prefix/:action{.:locale,}{.:formats,}{+:variants,}{.:handlers,}", @cache=#<ActionView::Resolver::Cache:0x85542ba0 @data=#<ActionView::Resolver::Cache::SmallCache:0x85542b8c @backend={}, @default_proc=#<Proc:[email protected]/home/luis/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionview-4.2.6/lib/action_view/template/resolver.rb:49 (lambda)>>>, @path="/home/luis/sites/AdvanceControldatatablejs2017/app/views">,
versuchen Sie die URL direkt aus dem Browser, um zu sehen, ob das Problem auf der Server-Seite oder Client-Seite ist. wie localhost: 3000/cliente.json – sethi
@sethi danke für die antwort. Ich habe versucht, localhost: 3000/clientes.json, aber ich werfe den folgenden Fehler: nicht initialisierte Konstante ClientesController :: ClientesDatatable (in dieser Zeile: format.json {render json: ClientesDatatable.new (view_context)}) – LuisC
wo ist diese Datei clientesdatatable.rb ?? Stellen Sie sicher, dass es geladen ist. – sethi