uzairaslam196
defp shipping_block( %{order: %{products: [_ | _] = products, delivery_info: delivery_info}} = assigns ) do
{added?, description} = shipping_description(delivery_info, products)
assigns = Enum.into(assigns, %{description: description, added?: added?})
~H"""
<.summary_block label={"Shipping #{@description}"} value={Cart.total_shipping(@order)} />
<%= unless @order.placed_at do %>
<.summary_block label={@added? && "#{zip(@order)} Edit" || "Add zipcode for actual"} class="mt-[-4px] text-sm underline cursor-pointer text-blue-planning-300", event="zipcode" />
<% end %>
"""
end
I am using {:phoenix_live_view, "~> 0.18.18"},
Elixir 1.14.3
erlang 24.1.7
Problem:
I am getting description using this method shipping_description(delivery_info, products),
So whenever delivery_info is changed, the description is also changed accordingly.
However, changes don’t reflect in view. I used IO.inspect to confirm that it changes the description once delivery_info is updated.
But that change doesn’t reflect on the page until it refreshes. However, if I directly call this method within HTML using “#{}” it works correctly. I encountered the same type of issue many times in live views.
Why does this happen?
Does this issue exist in live views, or am I doing something wrong in the code? i see no issue in the code, and when using IO.inspect, it prints the correct values for description. However on view it doesn’t change
defp summary_block(assigns) do
assigns = Enum.into(assigns, %{value: nil, icon: nil, class: nil, event: nil})
~H"""
<dt class={"hidden toggle lg:block #{@class}"} phx-click={@event}><%= @label %.
</dt>
<dd class="self-center hidden toggle lg:block justify-self-end"><%= @value %>.
</dd>
"""
end
this is code of summary_block/1 component
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #ai
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #hex
- #security











Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
sodapopcan
You should be using LiveView’s
assigninstead ofEnum.intoto update assigns. It’s required for change tracking which I’m imaging is what is wrong. See here.codeanpeace
It looks like change tracking is breaking. I’d suggest reading through the guide Assigns and HEEx templates — Phoenix LiveView v1.2.5.
uzairaslam196
Thanks for your quick help and for letting me know the correct way.