jason.o
Default value for a text input in an Ash.Form
I’m trying to provide a default value (which is a name retrieved from a DB) to an input tag. When the form is mounted, the default value in the “name” field input box is populated as expected. Then the user enters a different name to replace the default value, and it changes with no problem. However, when the user then enters a value to the other input (“Code” field), the Name field goes back to the initial default value. How can I make the form keep the user input (after the form validation)? Or is there a better way to provide a default input value?
<.form :let={f} phx-change="validate">
<.input field={{f, :name}} type="text" label="Name" value={@dynamic_default_name}>
<.input field={{f, :code}} type="text" label="Code" >
</.form>
def handle_event("validate", %{"form" => form_params}, socket) do
form = AshPhoenix.Form.validate(socket.assigns.form, form_params)
socket
|> assign(:form, form)
|> noreply()
end
Marked As Solved
zachdaniel
There are three ways to do it. The first, is to set the default in the action logic
change fn changeset, _ ->
if ...(check if argument or attribute set w/ your name) do
Ash.Changeset.change_attribute(:name, dynamic_default)
else
changeset
end
end
The second one:
<.input field={{f, :name}} type="text" label="Name" value={AshPhoenix.Form.value(f, :name) || @dynamic_default_name}>
The third one, when creating the initial form
form = AshPhoenix.Form.for_create(...)
AshPhoenix.Form.validate(form, %{...params with deafult})
Also Liked
zachdaniel
Try doing AshPhoenix.Form.validate(form, %{...params}, errors: false)
Popular in Questions
Other popular topics
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








