kdubovikov

kdubovikov

Many-to-many form with autocomplete

I am trying to build a form that allows users to create a Team with leaders and members that I’ve set up as many_to_many relation with User table. User should be able to dynamically add as many members or leaders as he wants when creating a new Team.

I find creating something like this to be a pretty challenging experience with Phoenix.

I have built an autocomplete component that allows to select a user by typing an email. Then, I am trying to use this component inside my new Team form. Once a selection is made, I am sending an event with the selected user_id to the parent component, where I try to modify my Ecto Changeset to reflect the addition.

The entire setup is pretty convoluted with sending events between form and autocomplete components, sharing changeset and parent component IDs for sending messages from autocomplete back to form. Is this functionality something that I should avoid building when working with Phoenix and LiveView?

Here is a list of problems that I am meeting:

  1. I can’t figure out how to add a link to an existing user into a changeset
  2. The entire form gets validated each time I type a letter in the team name field
  3. Each time when I add a new user entry to the autocomplete component, all other entries get erased (I guess I reset the state accidentally somewhere in the code)

I was not able to find up-to-date examples on how to build such forms. Could someone navigate me on how to approach this?

I have uploaded my code for reference:

First Post!

mayel

mayel

Where Next?

Popular in Questions Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
Lily
In templates/appointment/index.html.eex: <%= for appointment <- @appointments do %> <tr> <td><%= appoi...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

Other popular topics Top

ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
Darmani72
If I have a post route which an argument: post /my_post_route/:my_param1, MyController.my_post_handler How would get the post params ...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 44139 214
New

We're in Beta

About us Mission Statement