Jono

Jono

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?

Showing Posts 1 to 6

Matheus

Matheus

Hello, can you debug IO.inspect like this to show the return? :smile:

def handle_event("save", values, socket) do
    IO.inspect(values)
    save_player_test(socket, socket.assigns.action, player_test_params)
 end
i-n-g-m-a-r

i-n-g-m-a-r

You should only have an ~L inside render/1.
The variables you assign are not change tracked.

Also the f = assignment should be avoided according to the docs.

You probably don’t need a form and maybe submitting a form is the problem.
I haven’t tried submitting a form inside a LiveComponent.

Jono

Jono OP

I should have mentioned that my IO.inspect that says ‘Save’ never gets called so not too worried about seeing the values.

Jono

Jono OP

Could you point me where it says that?
As for the ~L being the only thing, that makes sense. Although, if it’s anything like react - it’s not that those aren’t being change tracked - the issue is they would be called too often, and in this case would DoS your db.

i-n-g-m-a-r

i-n-g-m-a-r

The docs are not consistent regarding variable assignment inside live templates.

This one says:

To sum up:

  1. Avoid passing block expressions to library and custom functions
  2. Never do anything on def render(assigns) besides rendering a template or invoking the ~L sigil
  3. Avoid defining local variables, except within for , case , and friends

And this one literally suggests defining a local variable just like you did:

<%= f = form_for @changeset, "#" %>
  <%= live_component @socket, SomeComponent, f: f %>
</form>

Only a few days ago I posted this question about the same subject.
I don’t know exactly what is the rationale or the right thing to do.

Jono

Jono OP

I’ll keep an eye on your question see what comes :slight_smile:

— All posts loaded —

Where Next? Top

Trending in Questions Top

water
I’m aware of 2 such projects, are there others? git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
peck
Hi everyone. My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
bradley
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
unaware8150
Hello folks! So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
Alvinkariuki
How Can I Optimise Compile Time Dependencies I have been building an elixir application for about 2 years now. Many modules and files ha...
New
leoschweizer
Hi, we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New

Other Trending Topics Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews