Each component is a form for a different model, each component is stateful (at least I pass in an id
to each.
One of them is a new model form instead of an edit form. So I naively pass a -1
as an id, perhaps that’s the issue. If that’s true, let me know and I’ll try to abstract out the form. Then I would use it for edit component (stateful) and new form component (probably need to be stateless).
Both if you think I’m doing this find already, with the stateful id:1
component. This is the render
and the handle_event
@impl true
def handle_event("save", %{"player_test" => player_test_params}, socket) do
IO.inspect("save")
save_player_test(socket, socket.assigns.action, player_test_params)
end
@impl true
@spec render(any) :: Phoenix.LiveView.Rendered.t()
def render(assigns) do
changeset = Training.change_player_test(%PlayerTest{})
players = LightSteel.Client.list_players()
~L"""
<tr>
<%= f = form_for changeset, "#",
id: "test-player-form",
phx_target: @myself,
phx_change: "validate",
phx_submit: "save" %>
<td><%= select f, :player_id, Enum.map(players, &{&1.name, &1.id}) %></td>
<td><%= number_input f, :result %></td>
<td><%= textarea f, :notes %></td>
<td><%= date_input f, :occured %></td>
<td><%= error_tag f, :result %><%= error_tag f, :notes %><%= error_tag f, :occured %></td>
<td><%= submit "Save", phx_disable_with: "Saving..." %></td>
</form>
</tr>
"""
end
It doesn’t save though, and pressing the save button doesn’t seem to be caught by that handle_event
call. Any ideas why?