Sirs I’m trying to paginate, but I’m getting the following error.
A small note: There is no id column in the database.
Because this is an external query, I can not give mix ecto.create
Below I will show my files.
Error:
[info] Sent 500 in 1315ms
[error] #PID<0.447.0> running GcallWeb.Endpoint (connection #PID<0.433.0>, stream id 4) terminated
Server: localhost:4000 (http)
Request: GET /relatorios
** (exit) an exception was raised:
** (Protocol.UndefinedError) protocol Scrivener.Paginater not implemented for [%{accountcode: “”, amaflags: 3, …
struture
def list_cdr do
query_list_cdr = from e in Ecdr,
select: %{calldate: e.calldate, accountcode: e.accountcode, amaflags: e.amaflags, billsec: e.billsec, channel: e.channel, clid: e.clid, dcontext: e.dcontext, disposition: e.disposition, dst: e.dst, dstchannel: e.dstchannel, duration: e.duration, lastapp: e.lastapp, lastdata: e.lastdata, src: e.src, uniqueid: e.uniqueid, userfield: e.userfield}
Repo.all(query_list_cdr)
end
view
defmodule GcallWeb.EcdrView do
use GcallWeb, :view
import Scrivener.HTML
end
controller
def index(conn, params) do
cdr = Structure.list_cdr()
page = Structure.list_cdr
|> Repo.paginate(params)
render(conn, "index.html", cdr: page.entries, page: page)
end
config
config :scrivener_html,
routes_helper: GcallWeb.Router.Helpers
Template
<%= pagination_links @page, view_style: :bootstrap_v4, next: "Avançar", previous: "Voltar" %>
The only problem that happened was in this page, all the other pages that consult another table, which contains “id” works perfectly.