Checking used_input?/1 on inputs_for/1?

In LiveView 1.0 (1.0.0-rc.7), I am using inputs_for/1 to render forms for a nested Ash resource and it’s working great with validation of the fields in the nested resource as well as validation of the attribute with the array of the resources itself.

So, I am able to show the error below the inputs_for/1 component. However, I’m unable to immediately use used_input?/1 in order to delay showing this error until the field of the attribute for the nested resource should be considered used, after submission in this case I would like to think.

Notably, the params do not include any entry for _unused_addresses which would have caused used_input?/1 to work.

  • Is there an “idiomatic” way to handle this?
  • Am I holding it wrong?

The attribute in question

attribute :addresses, {:array, MyApp.MyDomain.PostalAddress},
      allow_nil?: false,
      public?: true

The field in the form

<.inputs_for :let={address_form} field={@form[:addresses]}>

Thank you in advance for any insights :pray:

I believe this is fixed in main of Phoenix live view but not released yet.

1 Like

Thanks Zach but I just checked on main and get the same result.

Maybe you’re referring to this issue?

That fix from Chris fixed used_input?/1 for the fields on the nested resource itself though.

Retracting this last reply and investigating, sorry :slight_smile:

1 Like

Hey I’d like to bump this post regarding using inputs_for on a required attribute referring to an embedded schema and showing validation errors when left empty, but only when considered “used” in LiveView 1.0 terms.

I’m running into this again and I, sincerely, cannot find any example or documentation to the effect.

While searching now I found this post on the forum (non Ash) where the poster @smon also attempted to show the errors manually within the inputs_for but faced the issue of the error message showing upon first validation, i.e. before it was “used” in the sense of used_input?/1 (that was not LiveView 1.0 I would guess).

For now I’m just showing the error from the first validation but I’m getting questions about it.

Since a lot of different things could be going on here, I think that the best thing to do here would be to make a reproduction.

1 Like