Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested forms #569

Open
mbajur opened this issue Dec 24, 2023 · 4 comments
Open

Nested forms #569

mbajur opened this issue Dec 24, 2023 · 4 comments

Comments

@mbajur
Copy link

mbajur commented Dec 24, 2023

Hello,
I'm trying to use ActiveInteraction with nested forms feature of rails. Here is my view:

<%= form_with model: interaction do |f| %>
  <%= f.fields_for :sections do |ff| %>
    <%= debug ff.object.class %>
  <% end %>
<% end %>

For some reason, the debug line is not returning a nested section record but nil. On the other hand, if i pass a second argument to fields_for (collection) as, say, f.fields_for :sections, record.sections, the debug line returns ActiveRecord::Relation instance instead of the record.

Changing this code to use a direct record instead of interaction objects fixes everything and debug starts returning actual record objects which means that there is something wrong about ActiveInteraction that yelds a collection to fields_for block instead of iterating through objects. Or i just did something wrong :)

Thanks in advance for any clues!

@sandstrom
Copy link

Is this an issue with the code itself, or a general question? For general questions Stackoverflow or Github Discussions (if one is setup for this repo) is better than Github.

@mbajur
Copy link
Author

mbajur commented Mar 26, 2024

It's happening only when using active_interaction so it seems like a bug with AI, not a general question

@antulik
Copy link
Contributor

antulik commented Apr 23, 2024

Or i just did something wrong :)

Yes, you are correct, that's what I observe too. I didn't get to the bottom of it, so I'm just always passing the second argument.

@antulik
Copy link
Contributor

antulik commented Aug 8, 2024

Update. fields_foris looking for a specific interface on the object which is implemented by accepts_nested_attributes_for in ActiveRecord::NestedAttributes::ClassMethods.

Specifically methods

  • #{association}_attributes= and
  • association

I've started implementing accepts_nested_attributes_for extension for active_interaction. It's still experimental, and only implemented for collections, but I already found it a great time saver for implementing nested forms.

You can see it here.
https://github.com/antulik/active_interaction-extras/blob/master/lib/active_interaction/extras/nested_attributes.rb 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants