silviurosu
Phoenix Liveview comprehensions and dynamic forms
I am rendering a comprehension inside Liveview template (a list of reviews).
For each one when pressing a button I want to display an inline form to reply to that message.
Some code snippets simplified to show what I have:
<article :for={rv <- @reviews} id={"received_#{rv.id}"} class="static p-6 bg-white">
<div class="font-normal text-text_color">
<%= rv.description %>
</div>
<button type="button" id={"show_reply_button_#{rv.id}"} phx-click={JS.push("show_reply_form", value: %{id: rv.id})}>
<img class="mr-1.5 w-3.5 h-3.5" src="/images/message.svg" alt="raporteaza icon" /> <%= gettext("Reply") %>
</button>
<div :if={@form} class="mt-8 ml-12">
<.simple_form for={@form} id="reply_review_form" phx-submit="submit_reply" class="mb-6">
<:actions>
<.input type="hidden" id="review_id" field={@form[:review_id]} />
</:actions>
<:actions>
<label for="comment" class="sr-only">Your comment</label>
<.input type="textarea" id="comment" field={@form[:content]} rows="6" placeholder={gettext("Tell us...")} />
</:actions>
<:actions>
<button type="button" phx-click="cancel_reply">
<%= gettext("Cancel") %>
</button>
<button type="submit" >
<%= gettext("Send") %>
</button>
</:actions>
</.simple_form>
</div>
</article>
On the server side I have:
def handle_event("show_reply_form", %{"id" => review_id}, socket) do
form_data = %{
"review_id" => review_id,
"content" => nil
}
form = to_form(form_data, as: "review")
socket = assign(socket, form: form)
{:noreply, socket}
end
Clicking on the button send the event to server side, The form is added to assigns but in the UI I get no diff via socket and no update is made.
I tried to generate a dynamic form for each item from the list but still no render update.
Any suggestions on what I am doing wrong?
First Post!
03juan
The form is nested inside the for comprehension so the loop won’t run again unless you make a change to @reviews. I think in the current code the same form will then render for each comment.
Popular in Questions
For example for a current url like
http://localhost:4000/cosmetic/products?_utf8=✓&query=perfume&page=2,
I would like to get:
...
New
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
Hello, how can I check the Phoenix version ?
Thanks !
New
Is there a way to rollback a specific migration and only that one (“skipping” all the other ones)?
Would
mix ecto.rollback -v 200809061...
New
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
Hello everybody,
usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
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
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
I would like to know what is the best IDE for elixir development?
New
Other popular topics
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
After calling mix ecto.create I get this error:
17:00:32.162 [error] GenServer #PID<0.412.0> terminating
** (Postgrex.Error) FATAL...
New
Hey all,
I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set?
Thanks.
New
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
Got a question about when to concat vs. prepending items to list then reversing to achieve appending.
So i know lists boil down to [1 | ...
New
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
Hello!
Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #advent-of-code
- #elixirconf-us
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #security
- #performance









