greetings. first post/question. sorry to even bother anyone.
i started a project with a lot of generated code, but i’m still having trouble hooking things up (router, context, view), all-the-while learning the framework 'n language. I feel like i’m getting closer to the learning curve’s edge and finding the promised productive-land, so i don’t want to give up yet, but something here just doesn’t seem right to me…:
i’ve got two similar errors that error on core_components.ex
. the browser displays these errors:
KeyError at GET /games/1
key :item not found in: %{
__changed__: nil,
inner_block: [
%{
__slot__: :inner_block,
inner_block: #Function<8.124877290/2 in GameArchiveWeb.GameHTML.show/1>
}
],
__given__: %{
__changed__: nil,
inner_block: [
%{
__slot__: :inner_block,
inner_block: #Function<8.124877290/2 in GameArchiveWeb.GameHTML.show/1>
}
]
}
}
and
KeyError at GET /games
key :col not found in: %{
id: "games",
rows: [
%GameArchive.Game{
__meta__: #Ecto.Schema.Metadata<:loaded, "games">,
id: 1,
title: "test",
alt_titles: ["string 1", "string 2"],
makers: ["string 1", "string 2"],
...
(LIST ALL Game ROWS FROM DB)
...
action: [
%{
__slot__: :action,
inner_block: #Function<30.124877290/2 in GameArchiveWeb.GameHTML.index/1>
},
%{
__slot__: :action,
inner_block: #Function<31.124877290/2 in GameArchiveWeb.GameHTML.index/1>
}
],
__changed__: nil,
inner_block: [
%{
__slot__: :inner_block,
inner_block: #Function<29.124877290/2 in GameArchiveWeb.GameHTML.index/1>
}
],
row_click: #Function<28.124877290/1 in GameArchiveWeb.GameHTML.index/1>
},
__changed__: nil,
inner_block: [
%{
__slot__: :inner_block,
inner_block: #Function<29.124877290/2 in GameArchiveWeb.GameHTML.index/1>
}
],
row_click: #Function<28.124877290/1 in GameArchiveWeb.GameHTML.index/1>,
row_id: nil,
row_item: &Function.identity/1
}
in core_components.ex
:
<div :for={item <- @item} class="flex gap-4 py-4 text-sm leading-6 sm:gap-8">
# and
<th :for={col <- @col} class="p-0 pb-4 pr-6 font-normal"><%= col[:label] %></th>
it seems to me the core_components
html template is using/expecting my database schema to have a field named col
and item
, but that can’t be right…, can it??
my Games.ex
(confusing name, i kno) context
def list_games do
Repo.all(Game) # i think this selects all by default..
end
def get_game!(id) do
Repo.get(Game, id)
end
router.ex
resources "/games", GameController # macro magicks
phew… i hope that’s everything to understand the problem… there’s just so much abstraction…!
i used a lot of generation stuff: schema first, then html (–no-schema), but the gen’d context file was unimplemented (raise TODO
), so i tried to implement it (with the help of docs/context), and now i’m just going through a bunch of errors to get things to work…
again, sorry to bother. I’m thinking maybe it would have been a smoother experience to simply use phx.gen.html
to gen everything (schema, context, html, router?) at the same time…